Python 正则表达式匹配模式,但排除内部有特定单词的匹配

Python 正则表达式匹配模式,但排除内部有特定单词的匹配,python,regex,Python,Regex,我检查了所有相关问题,但似乎lookbehinds不允许在我的模式中使用所需的单词。 这就是我的问题: 我需要匹配此模式: word1.*word3 但是如果里面有word2,则不匹配,例如: word1 word2 word3 有没有办法用一行正则表达式来实现这一点?我用2个正则表达式完成了这项工作,但我发现它有点凌乱:)正则表达式(查看@revo的答案了解更多细节): 这不使用regex,但它应该可以工作: if word1 in your_string and word3 in

我检查了所有相关问题,但似乎lookbehinds不允许在我的模式中使用所需的单词。 这就是我的问题:

我需要匹配此模式:

  word1.*word3
但是如果里面有word2,则不匹配,例如:

  word1 word2 word3
有没有办法用一行正则表达式来实现这一点?我用2个正则表达式完成了这项工作,但我发现它有点凌乱:)

正则表达式(查看@revo的答案了解更多细节):

这不使用
regex
,但它应该可以工作:

if word1 in your_string and word3 in your_string:
    w1 = your_string.index(word1)
    w3 = your_string.index(word3)

    if word2 not in your_string[w1, w3 + len(word3) - 1]:
        print(your_string[w1, w3 + len(word3) - 1])
您正在寻找一个:


在非捕获组中,每次前进时,都应该通过负前瞻,否则下一个立即字符不匹配,整个提示失败。

可能正在查找
word1((?!word2)。*word3
谢谢您的发布,朋友。记住这一点,但是我需要一个正则表达式:)
if word1 in your_string and word3 in your_string:
    w1 = your_string.index(word1)
    w3 = your_string.index(word3)

    if word2 not in your_string[w1, w3 + len(word3) - 1]:
        print(your_string[w1, w3 + len(word3) - 1])
word1(?:(?!word2).)*?word3
                    ^ un-greedy