gpt4 book ai didi

java - 通过正则表达式获取多个匹配项

转载 作者:行者123 更新时间:2023-11-30 06:49:53 25 4
gpt4 key购买 nike

我想使用 REGEX 通过匹配器和模式从全局字符串中检索字符串。

String str = "<strong>ABC</strong>123<strong>DEF</strong>"
Pattern pattern = Pattern.compile("<strong>(.*)</strong>");
Matcher matcher = pattern.matcher(str);

我的问题是匹配器只给了我一个位于全局标记 Strong 内的匹配项:

ABC</strong>123<strong>DEF

我的目标是获得 2 场比赛:

ABC
DEF

非常感谢您的帮助。

最佳答案

你需要一个非贪婪的正则表达式:

Pattern pattern = Pattern.compile("<strong>.*?</strong>");

使用?指定非贪婪。这意味着它将匹配它找到的第一个匹配项,而不是最外层的匹配项...

如果您只想要 ABCDEF 那么您可以使用前瞻和后瞻执行类似的操作:

String str = "<strong>ABC</strong>123<strong>DEF</strong>";
Pattern pattern = Pattern.compile("((?<=<strong>).*?(?=</strong>))");
Matcher matcher = pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}

如果您进行谷歌搜索,您应该能够找到有关前向和后向的信息...

关于java - 通过正则表达式获取多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120539/

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