gpt4 book ai didi

java - 匹配器找不到重叠的单词?

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

我正在尝试获取一个字符串:

String s = "This is a String!";

并返回该字符串中的所有 2 字对。即:

{"this is", "is a", "a String"}

但现在,我所能做的就是返回:

{"this is", "a String"}

如何定义 while 循环,以便能够解决缺少重叠单词的问题?我的代码如下:(真的,我很高兴它只返回一个表示它找到了多少个字符串子集的 int...)

int count = 0;
while(matcher.find()) {
count += 1;
}

谢谢大家。

最佳答案

我喜欢已经发布的两个答案,计算单词数并减去一个,但如果您只需要一个正则表达式来查找重叠的匹配项:

Pattern pattern = Pattern.compile('\\S+ \\S+');
Matcher matcher = pattern.matcher(inputString);
int matchCount = 0;
boolean found = matcher.find();
while (found) {
matchCount += 1;
// search starting after the last match began
found = matcher.find(matcher.start() + 1);
}

实际上,您需要比简单地加 1 更聪明一点,因为在“theforce”上尝试此操作将匹配“heforce”,然后匹配“eforce”。当然,这对于计算单词数来说有点大材小用,但如果正则表达式比这更复杂,这可能会很有用。

关于java - 匹配器找不到重叠的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12470918/

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