如何使用正则表达式在双引号内获取字符串?
我有以下字符串:
<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)
你可以这样做:
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)
| 归档时间: |
|
| 查看次数: |
27403 次 |
| 最近记录: |