【发布时间】:2012-04-11 16:44:21
【问题描述】:
<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>
我知道这个正则表达式用于检索 src 的值。谁能教我应该如何解释这个表达?坚持下去。
【问题讨论】:
-
解释是什么意思?了解正则表达式中每个字符的含义,还是想知道如何使用此正则表达式检索 src 属性值?
标签: java regex expression
<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>
我知道这个正则表达式用于检索 src 的值。谁能教我应该如何解释这个表达?坚持下去。
【问题讨论】:
标签: java regex expression
解释:
<img 与字符串 "<img" 完全匹配
[^>]+ 匹配除> 之外的所有内容多次,因此标签不会被关闭src 完全匹配字符串“src”\\s* 匹配任意数量的空白字符= 完全匹配字符串 "="\\s* 匹配任意数量的空白字符['\"] 匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串([^'\"]+) mathches 除了引号之外的所有内容。内容用括号括起来,以便它们被声明为组并且可以稍后检索['\"] 匹配两个引号。双引号被转义,否则它将终止正则表达式的字符串[^>]* 匹配剩余的非 ">" 字符> 完全匹配字符串 ">",即标记的右括号。我不同意这个表达是废话,只是有点复杂。
编辑这里是一些示例代码:
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 次或更多次的空白字符”。你对其他块做同样的事情。
希望对你有帮助。
【讨论】: