定位模式,如果未找到,则定位越来越小的子集



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

假设String regex有一个包含 7 个单词的字符串,如果没有发生匹配以减少到 6,5,4 等单词,我很感兴趣。

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

  1. 以上情况将通过使用StringBuffer和之后发生 splitting按空间regex变量,我会构造正则表达式由append .
  2. 如果我没有得到匹配,我会再次循环构建表达式到word6等,并进一步减少到word5等,直到我击中一场比赛。

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

贪婪(默认(会做你想做的事

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

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

您可以组合单词和空格,然后可以指定计数限制,例如在您的情况下为 1-7。 这可能是另一种解决方案

最新更新