gpt4 book ai didi

java - 使用拆分提取重叠匹配项

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:06 25 4
gpt4 key购买 nike

如何使用 String.split() 从输入中提取重叠的匹配项?

例如,如果尝试查找与 "aba" 的匹配项:

String input = "abababa";
String[] parts = input.split(???);

预期输出:

[aba, aba, aba]

最佳答案

String#split 不会给你重叠匹配。因为字符串的特定部分,只会包含在获得的数组的唯一索引中,而不会包含在两个索引中。

你应该在这里使用 PatternMatcher 类。您可以使用此正则表达式:-

Pattern pattern = Pattern.compile("(?=(aba))");

然后使用Matcher#find 方法获取所有重叠的匹配项,并为其打印group(1)

上面的正则表达式匹配每个空字符串,后面跟着 aba,然后只打印第一个捕获的组。现在由于 look-ahead零宽度断言,所以它不会消​​耗匹配的字符串。因此,您将获得所有重叠的匹配项。

String input = "abababa";
String patternToFind = "aba";

Pattern pattern = Pattern.compile("(?=" + patternToFind + ")");
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
System.out.println(patternToFind + " found at index: " + matcher.start());
}

输出:-

aba found at index: 0
aba found at index: 2
aba found at index: 4

关于java - 使用拆分提取重叠匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044800/

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