我想在文本中搜索字符串“W foo X bar Y baz Z”。W,X,Y,Z 是不重要的分隔符,我不能搜索它们。foo、bar 和 baz 是我感兴趣的词。顺序并不重要。我想知道我要求的单词在文本中出现的“好”程度。
我正在尝试以下
(?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)?
我的理由是:
- 将每个单词打包在一个可选组中,因此不需要出现 [ (?: 是一个非捕获组,\Q...\E 只是转义]
- 用 .{0,3} 分隔每个单词(任何字符,出现 0-3 次)
此 Regex 始终匹配,因为它仅包含可选组,但结果匹配始终为空,即使它可以完全匹配所有可选组。但是,我想对结果匹配进行后处理,所以我需要它尽可能多地捕获。
我可以强制正则表达式尽可能匹配所有组吗?
或者你知道如何完成对几个单词的搜索,用一些东西分隔,然后检查哪些单词出现以计算一些相似度?
非常感谢