希望我能解释一下。
我有一个正则表达式,用于匹配彼此靠近的两个单词。例如,如果我想在彼此的5个单词中找到“account”和“number”这个词:
\ baccount \ W +(?:\ W + \ W +){1,6}数\ B'/ P>
这很有效。
现在我需要找到一种搜索单词的方法,只要它不在另一个单词的2个单词之内。
例如,我需要一个匹配“Butthead”的正则表达式,但只有当“Beavis”不在2个单词之内时,无论是在Butthead之前还是之后。
所以Butthead和Beavis不匹配。 Beavis和Butthead不匹配。但Beavis肯定是一个巨大的Butthead会匹配,因为Beavis和Butthead不在2个字以内。
答案 0 :(得分:1)
如果你的正则表达式系统支持可变长度负面外观,这应该有效。 我不认为许多正则表达式引擎支持这一点。我知道perl和php还不支持这个。我无法测试,因为我使用perl和php进行正则表达式测试。
/(小于比维斯(?:!?\ S + \ W +)\ S +)布特海德(?!?(:\ S + \ W +)BEAVIS)/
答案 1 :(得分:0)
你不能只做两场比赛吗?匹配以找到任何地方(简单)出现的单词然后丢弃该匹配,如果该单词不在另一个单词附近(你已经有了解决方案)。
答案 2 :(得分:0)
((((\布特海德\ W +(:\ W + \ W +){1,2}比维斯\ B)|(\比维斯\ W +(:?!???\ W + \ W +){1,2} ?布特海德\ b)中))。)*
也许是这样的......虽然没有试过...... 基本上我已经尝试使用以下逻辑: NOT((包含Butthead 2个字Beavis)或(包含Beavis 2个字Butthead))