<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>
我知道这个正则表达式用于检索src的值。任何人都可以教我如何理解这个表达方式吗?坚持下去。
答案 0 :(得分:2)
解释
<img
完全匹配字符串"<img"
[^>]+
匹配除>
之外的所有内容的多次,因此标记不会被关闭src
完全匹配字符串&#34; src&#34; \\s*
匹配任意数量的空白字符=
完全匹配字符串&#34; =&#34; \\s*
匹配任意数量的空白字符['\"]
匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串([^'\"]+)
数学多次除了引号之外的所有内容。内容用括号括起来,以便它们被声明为组,以后可以检索['\"]
匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串[^>]*
匹配剩余的非">"
字符>
完全匹配字符串">"
,即标记的结束括号。我不同意这个表达是一个废话,只是有点复杂。
编辑这里有一些示例代码:
String str = "<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>";
String text = "<img alt=\"booo\" src=\"image.jpg\"/>";
Pattern pattern = Pattern.compile (str);
Matcher matcher = pattern.matcher (text);
if (matcher.matches ())
{
int n = matcher.groupCount ();
for (int i = 0; i <= n; ++i)
System.out.println (matcher.group (i));
}
输出结果为:
<img alt="booo" src="image.jpg"/>
image.jpg
所以matcher.group(1)
会返回您想要的内容。用这段代码做一点实验。
答案 1 :(得分:0)
您可以查看网络上提供的其中一个教程 - 例如http://www.vogella.com/articles/JavaRegularExpressions/article.html。 3.1节和3.2节通用匹配符号简要说明了每个符号及其替换的内容以及元字符。把你在这里的东西分成更小的块,以便更容易理解。例如,你有两个位置它是空格字符的元字符。反斜杠是Java中的转义字符,因此你有\ s而不是\ s。在他们每个人之后你有一个。第3.3节解释了量词 - 这个特殊的一个意味着它发生了0次或更多次。因此\ s 表示“搜索出现0次或更多次的空白字符”。你对其他块做同样的事情。
希望它有所帮助。