我有兴趣在一个字符串中找到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
...