gpt4 book ai didi

Java匹配器组捕获

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:27 25 4
gpt4 key购买 nike

编辑:如果可能的话,我还需要让正则表达式与字符串格式匹配

[id='value1' or id='value2' or ... or id='valueN'] 

并捕获所有值。

我有一段代码没有按我的预期工作,我不确定我的错误在哪里。基本上我有一个像

这样的字符串
[id='id1' or id='id2' or id='id3'] 

我需要找到所有值,例如 id1id2id3

final String regex = "\\[id='([^']+)'(?:\\s*or\\s*id='([^']+)')*\\]";
final String text = "[id='id1' or id='id2' or id='id3']";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(text);

如果我这样做

while(matcher.find())
{
System.out.println(matcher.group(1));
}

我只得到

id1

if (matcher.matches())
{
System.out.println("Groups count: " + matcher.groupCount());
for (int i = 1; i <= matcher.groupCount(); i++)
{
System.out.println(matcher.group(i));
}
}

我明白了

id1
id3

预期输出为

id1
id2
id3

这两个输出都不是预期的。有人可以指出我正则表达式是否错误或者是因为该组找到了部分代码吗?

最佳答案

您可以使用正则表达式来匹配所有 id 值。

String s = "[id='id1' or id='id2' or id='id3']";
Pattern regex = Pattern.compile("(?<=id=')[^']+");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
System.out.println(matcher.group(0));
}

输出:

id1
id2
id3

关于Java匹配器组捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317127/

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