我正在寻找一个正则表达式,可以从java中的以下HTML片段中获取src(不区分大小写)标记。
<html><img src="kk.gif" alt="text"/></html>
<html><img src='kk.gif' alt="text"/></html>
<html><img src = "kk.gif" alt="text"/></html>
答案 0 :(得分:24)
一种可能性:
String imgRegex = "<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>";
是一种可能性(如果匹配不区分大小写)。这有点乱,故意忽略不使用引号的情况。表示它而不用担心字符串转义:
<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>
匹配:
<img
>
的字符(即可能的其他属性)src
=
'
或"
>
的字符(更多可能的属性)>
关闭代码需要注意的事项:
src=
,请将左侧的开放式支架向左移动: - )>
的属性或包含'
或{{的图像源1}})。答案 1 :(得分:17)
这个问题在这里出现了很多。
正则表达式是处理此问题的错误方式。帮自己一个忙,并使用某种HTML解析器。
正则表达式解析HTML时不稳定。你最终会得到一个复杂的表达式,在将发生的某些极端情况下会出现意外行为。
编辑: 如果您的HTML就这么简单:
Pattern p = Pattern.compile("src\\s*=\\s*([\\"'])?([^ \\"']*)");
Matcher m = p.matcher(str);
if (m.find()) {
String src = m.group(2);
}
答案 2 :(得分:1)
这个答案适用于谷歌搜索者,因为已经太晚了
复制克莱图斯显示错误和
修改他的答案并将修改后的字符串Pattern.compile
作为传递到 String htmlString = "<div class=\"current\"><img src=\"img/HomePageImages/Paris.jpg\"></div>"; //Sample HTML
String ptr= "src\\s*=\\s*([\"'])?([^\"']*)";
Pattern p = Pattern.compile(ptr);
Matcher m = p.matcher(htmlString);
if (m.find()) {
String src = m.group(2); //Result
}
的参数传递给我,
以下是完整示例
<label>
<input type="checkbox" class="ck" name="event[]" id="event" value="<?php echo $row['name'];?>"><span>Wybierz</span>
</label>
答案 3 :(得分:0)
你的意思是img-Tag的src属性?在这种情况下,您可以使用以下内容:
<[Ii][Mm][Gg]\\s*([Ss][Rr][Cc]\\s*=\\s*[\"'].*?[\"'])
那应该有用。表达式src ='...'是parantheses,因此它是一个匹配组,可以单独处理。