正则表达式中的双引号

Amm*_*mmu 11 java regex

如何使用正则表达式在双引号内获取字符串?

我有以下字符串:

<img src="http://yahoo.com/img1.jpg" alt="">
Run Code Online (Sandbox Code Playgroud)

我想把字符串http://yahoo.com/img1.jpg alt=""放在外面.我怎么能用正则表达式做到这一点?

Kaj*_*Kaj 10

我不知道为什么你也想要alt标签,但这个正则表达式可以满足您的需求:第1组是网址,第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));
}
Run Code Online (Sandbox Code Playgroud)

输出:

http://yahoo.com/img1.jpg  alt=""
http://yahoo.com/img2.jpg  alt=""
Run Code Online (Sandbox Code Playgroud)


Mar*_*coS 8

你可以这样做:

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));
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在解析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);
Run Code Online (Sandbox Code Playgroud)