繁体   English   中英

正则表达式中的双引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM