0
<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>

我知道这个正则表达式用于检索 src 的值。谁能教我应该如何解释这个表达?坚持下去。

4

2 回答 2

2

解释:

  • <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)返回你想要的。用这段代码做一些实验。

于 2012-04-11T16:56:27.343 回答
0

您好,请查看网上可用的教程之一 - 例如http://www.vogella.com/articles/JavaRegularExpressions/article.html。第 3.1 节和第 3.2 节常用匹配符号简要解释了每个符号及其替换的内容以及元字符。把你在这里的东西分成更小的块,以便更容易理解。例如,您在两个地方有 \s 它是空白字符的元字符。反斜杠是 Java 中的转义字符,因此您使用 \s 而不是 \s。在他们每个人之后,您都有一个. 第 3.3 节解释了量词——这个特定的意味着它出现 0 次或多次。因此 \s表示“搜索出现 0 次或更多次的空白字符”。你对其他块做同样的事情。

希望能帮助到你。

于 2012-04-11T16:54:13.883 回答