<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>
我知道这个正则表达式用于检索 src 的值。谁能教我应该如何解释这个表达?坚持下去。
<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>
我知道这个正则表达式用于检索 src 的值。谁能教我应该如何解释这个表达?坚持下去。
解释:
<img
完全匹配字符串"<img"
[^>]+
匹配所有内容的多次 but >
,因此标签不会被关闭src
完全匹配字符串“src”\\s*
匹配任意数量的空白字符=
完全匹配字符串“=”\\s*
匹配任意数量的空白字符['\"]
匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串([^'\"]+)
除了引号以外的所有东西都要计算多次。内容被括在括号中,以便它们被声明为组并且可以稍后检索['\"]
匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串[^>]*
匹配剩余的非">"
字符>
完全匹配 string ">"
,标签的右括号。我不同意这个表达是废话,只是有点复杂。
编辑这里有一些示例代码:
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)
返回你想要的。用这段代码做一些实验。
您好,请查看网上可用的教程之一 - 例如http://www.vogella.com/articles/JavaRegularExpressions/article.html。第 3.1 节和第 3.2 节常用匹配符号简要解释了每个符号及其替换的内容以及元字符。把你在这里的东西分成更小的块,以便更容易理解。例如,您在两个地方有 \s 它是空白字符的元字符。反斜杠是 Java 中的转义字符,因此您使用 \s 而不是 \s。在他们每个人之后,您都有一个. 第 3.3 节解释了量词——这个特定的意味着它出现 0 次或多次。因此 \s表示“搜索出现 0 次或更多次的空白字符”。你对其他块做同样的事情。
希望能帮助到你。