我有兴趣在一个字符串中找到7个单词。
这些应以空格分隔的顺序显示。

假定String regex有一个包含7个单词的字符串,我很感兴趣是否没有出现匹配减少到6,5,4个其他单词的情况。

我认为的第一个正则表达式是:
\\b(?:word1(\\s+)word2(\\s+)word3(\\s+)word4(\\s+)word5(\\s+)word6(\\s+)word7)\\b


通过使用StringBuffer和之后
splitting变量regex按空间,我将构造
append的正则表达式。
如果没有匹配项,我将再次循环构建表达式
word6等,然后进一步降低到word5等,直到我打了一场比赛。


我不确定我是否真的喜欢这种方法,可以改进还是以更有效的方式进行?

最佳答案

贪婪(默认)会做你想要的

\\b(?:word1(?:(\\s+)word2(?:(\\s+)(?:word3(\\s+)(?:word4(\\s+)(?:word5(\\s+)(?:word6(?:(\\s+)word7)?)?)?)?)?)?)?)\\b


这将首先尝试匹配所有内容,然后忽略word7,然后忽略word6 ...

10-07 15:35