gpt4 book ai didi

java - 如何使用正则表达式从字符串中捕获所有实例

转载 作者:行者123 更新时间:2023-11-30 01:42:31 24 4
gpt4 key购买 nike

我在这里获得了有关 java 中正则表达式的帮助:java regex to capture any number of periods within a string

这解决了识别字符串模式的问题,但我一直无法弄清楚如何捕获文本正文中的所有实例。

如果我有一个像这样的字符串主体:

String body = "$tag:parent$ is the child of $tag:grand.parent$ who is the grandparent of $tag:child$"

我使用以下内容并始终捕获第一个 $tag:*$ 字符串,无论哪个是第一个,模式都会获取它,但在类似的内容中

final String REGEX = "\\$tag:(?:[a-z]+?\\.*){1,4}\\$";
Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pt.matcher(body);
if (matcher.find()) {
// do something with matcher.group() but should the group contain the all instances?
}

我尝试在 regex101.com 上将其括在 () 中,它匹配模式并列出组中的所有内容,但这不起作用

尝试了以下方法,但这只是我尝试随机的东西:

"(\\$tag:(?:[a-z]+?\\.*){1,4}\\$)"
"(^\\$tag:(?:[a-z]+?\\.*){1,4}\\$)"
"(?<=(\\$tag:(?:[a-z]+?\\.*){1,4}\\$))"

我基本上只是想要一种 java 正则表达式方法,以某种方式捕获所有实例。感谢您的帮助。

最佳答案

详细阐述我的评论:

使用 while 循环迭代输入中的所有匹配模式,例如:

// note: I have simplified your pattern a bit, you probably don't need all 
// those restrictions
Pattern pattern = Pattern.compile("\\$tag:.+?\\$");
Matcher matcher = pattern.matcher(body);
while (matcher.find()) {
// TODO whatever you want with the matched group
System.out.println(matcher.group());
}

输出

$tag:parent$
$tag:grand.parent$
$tag:child$

关于java - 如何使用正则表达式从字符串中捕获所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457435/

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