用于从 HTML 标记获取属性的正则表达式
我正在寻找一个正则表达式,可以从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>
我正在寻找一个正则表达式,可以从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>
一种可能性:
String imgRegex = "<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>";
是一种可能性(如果匹配不区分大小写)。这有点混乱,并且故意忽略了不使用引号的情况。要表示它而不必担心字符串转义::
<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>
这符合:
<img
>
src
=
'
"
>
>
关闭标签注意事项:
src=
>
'
"
这个问题在这里经常出现。
正则表达式是处理此问题的不良方法。帮自己一个忙,使用某种HTML解析器。
正则表达式对于解析HTML来说是不可靠的。你最终会得到一个复杂的表达式,在某些角落的情况下会出现意外的行为,否则就会发生这种情况。
编辑:如果你的HTML就是这么简单,那么:
Pattern p = Pattern.compile("src\\s*=\\s*([\\"'])?([^ \\"']*)");
Matcher m = p.matcher(str);
if (m.find()) {
String src = m.group(2);
}
而且有很多Java HTML解析器。