[英]RegEx with pattern and matcher in JAVA
我有一个text / html文件,我需要一些信息。 因此,我在下面的代码中使用RegEx。
我的问题是,我希望模式p和模式l的结果在同一匹配器中,因为结果的顺序非常重要。 在我的代码中,System.output的顺序错误,因为他先打印模式p的结果,然后再打印模式l的结果。
如何解决这个问题?
String pattern1 = "<img class=\"galleryElement shown\" data-src=\"";
String pattern2 = "\" src=\"\" />";
String pattern3 = "<img class=\"galleryElement shown\" src=\"";
String pattern4 = "\" />";
Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
Pattern l = Pattern.compile(Pattern.quote(pattern3) + "(.*?)" + Pattern.quote(pattern4));
Matcher m = p.matcher(res.toString());
while (m.find()) {
System.out.println(m.group(1));
}
Matcher n = l.matcher(res.toString());
while (n.find()) {
System.out.println(n.group(1));
}
由于您尚未定义规则,因此请尝试一下。 让我知道您是否需要对模式进行任何修改:
<img class="galleryElement shown" (data-)?src="([^"]*?)"
模式说明: (data-)?src="([^"]*?)"
( group and capture to \1 (optional):
data- 'data-'
)? end of \1
src=" 'src="'
( group and capture to \2:
[^"]*? any character except: '"' (0 or more times (least))
) end of \2
" '"'
样例代码:
String pattern = "<img class=\"galleryElement shown\" (data-)?src=\"([^\"]*?)\"";
Pattern p = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("<img class=\"galleryElement shown\" data-src=\"abc\" />");
while (m.find()) {
System.out.println(m.group(2));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.