[英]Double quotes in Regular expression
如何使用正则表达式在双引号内获取字符串?
我有以下字符串:
<img src="http://yahoo.com/img1.jpg" alt="">
我想得到字符串http://yahoo.com/img1.jpg alt=""
外面。 如何使用正则表达式做到这一点?
我不知道你为什么也想要 alt 标签,但是这个正则表达式可以满足你的要求:第 1 组是 url,第 2 组是 alt 标签。 如果img和src之间可以有几个空格,并且'='周围可以有空格,我可能会稍微修改一下正则表达式
Pattern p = Pattern.compile("<img src=\"([^\"]*)\" (alt=\"[^\"]*\")>");
Matcher m =
p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\"> " +
"<img src=\"http://yahoo.com/img2.jpg\" alt=\"\">");
while (m.find()) {
System.out.println(m.group(1) + " " + m.group(2));
}
Output:
http://yahoo.com/img1.jpg alt=""
http://yahoo.com/img2.jpg alt=""
你可以这样做:
Pattern p = Pattern.compile("<img src=\"(.*?)\".*?>");
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">");
if (m.find())
System.out.println(m.group(1));
但是,如果您要解析 HTML,请考虑使用一些库:正则表达式不是解析 HTML 的好主意。 我对jsoup有很好的体验:这是一个例子:
String fragment = "<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">";
Document doc = Jsoup.parseBodyFragment(fragment);
Element img = doc.select("img").first();
String src = img.attr("src");
System.out.println(src);
这应该做的工作:
String url = "";
Pattern p = Pattern.compile("(?<=src=\")[^\"]*(?=\")");
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">");
if (m.find())
url = m.group());
解析器将获取除"
after src="
和before "
之外的每个字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.