gpt4 book ai didi

java - JAVA 中带有模式和匹配器的正则表达式

转载 作者:行者123 更新时间:2023-12-02 05:35:51 24 4
gpt4 key购买 nike

我有一个文本/html 文件,我需要其中的一些信息。因此我使用正则表达式,如下面的代码所示。

我的问题是,我希望模式 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="([^"]*?)"

Online demo

模式解释:(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));
}

关于java - JAVA 中带有模式和匹配器的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com