gpt4 book ai didi

java - 正则表达式查找所有匹配项

转载 作者:行者123 更新时间:2023-12-02 05:00:31 30 4
gpt4 key购买 nike

我需要一个正则表达式来查找我的模式的所有匹配项。

文字是这样的:

"someother text !style_delete [company code : 43ev4] between text !style_delete [organiztion : 0asj9] end of line text"

我想找到该模式的所有匹配项:

!style_delete [.*]

我尝试过这样的:

Pattern pattern = Pattern.compile("!style_delete\\s*\\[.*\\]");

这样,匹配文本就会像这样:

!style_delete [company code : 43ev4] between text !style_delete [organiztion : 0asj9]

但我的期望如下:

match 1 : !style_delete [company code : 43ev4] 
match 2 : !style_delete [organiztion : 0asj9]

请帮助我,java中的正则表达式会得到上面的输出。

最佳答案

@Test
public void test() {
final String input = "someother text !style_delete [company code : 43ev4] between text !style_delete [organiztion : 0asj9] end of line text";
// my regexp:strong text
// final String regex = "(!style_delete\\s\\[[a-zA-Z0-9\\s:]*\\])";
// regexp from Trinmon:
final String regex = "(!style_delete\\s*\\[[^\\]]*\\])";

final Matcher m = Pattern.compile(regex).matcher(input);

final List<String> matches = new ArrayList<>();
while (m.find()) {
matches.add(m.group(0));
}

assertEquals(2, matches.size());
assertEquals("match 1: ", matches.get(0), "!style_delete [company code : 43ev4]");
assertEquals("match 2: ", matches.get(1), "!style_delete [organiztion : 0asj9]");
}

编辑

也许 Trinimon 的答案中的模式更优雅一些。我用他的正则表达式更新了正则表达式。

关于java - 正则表达式查找所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830013/

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