需要正则表达式建议

时间:2012-04-11 16:44:21

标签: java regex expression

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

我知道这个正则表达式用于检索src的值。任何人都可以教我如何理解这个表达方式吗?坚持下去。

2 个答案:

答案 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次或更多次的空白字符”。你对其他块做同样的事情。

希望它有所帮助。