正则表达式不匹配空字符串

时间:2016-03-18 20:57:17

标签: java regex

Pattern srcAttrPattern = Pattern.compile("(?i)(?<=src=\")[^\"]*(?<!\")");
Matcher srcMatcher=srcAttrPattern.matcher("src=\"\"");
System.out.println(srcMatcher.find());

这打印错误。我如何解释上面的代码?是否需要进行任何修改以包含src =&#34;&#34;以上代码用于填充空字符串和填充字符串的目的。此语句基本上与html内容的<img>中的src标记匹配。

1 个答案:

答案 0 :(得分:2)

请注意,要解析HTML,您最好使用一些专用解析器(例如Jsoup)。

对于匹配src=""字符串的当前问题,最终的负面反馈要求当前位置之前的字符不是引号。由于您使用的是否定字符类[^"]*(除了"以外的0 +个字符),您就不需要那种后视。

删除(?<!"),您将src=""中的空字符串与"(?i)(?<=src=\")[^\"]*"匹配。

请参阅regex demo