Python 正则表达式仅在未找到子字符串B时匹配子字符串A

Python 正则表达式仅在未找到子字符串B时匹配子字符串A,python,regex,regex-lookarounds,Python,Regex,Regex Lookarounds,这似乎已经被问了很多次,但我找不到任何答案来解决我的具体要求 具有如下输入字符串: 1. The road is closed. 2. Closed road ahead. 3. There is a closed lane. 4. The lane is closed. 仅当单词lane不是输入字符串的一部分时,哪个正则表达式与单词closed匹配?这在以下方面应尽可能一般: 单词lane可以存在于单词closed之前或之后 任何数量和类型的单词都可以位于lane和closed之间,而不仅

这似乎已经被问了很多次,但我找不到任何答案来解决我的具体要求

具有如下输入字符串:

1. The road is closed.
2. Closed road ahead.
3. There is a closed lane.
4. The lane is closed.
仅当单词
lane
不是输入字符串的一部分时,哪个正则表达式与单词
closed
匹配?这在以下方面应尽可能一般:

  • 单词
    lane
    可以存在于单词
    closed
    之前或之后
  • 任何数量和类型的单词都可以位于
    lane
    closed
    之间,而不仅仅是
    a
    是上述示例中使用的
我所期望的是在输入字符串1和2中匹配
closed
,而不是在3和4中匹配(因为它们都包含禁止的单词
lane

我尝试使用负lookaheads和lookbehinds执行此操作,但这仍然与所有四个输入字符串中出现的
closed
匹配

(?<!lane)(?!lane)(closed)
(?
正则表达式风格是Python 3.4

^(?!.*\blane\b)(?=.*\bclosed\b).*$
试试这个。看演示


这是一个很好的解决方案。很酷!你还知道如何使它只匹配单词
closed
而不是整个字符串吗?@Dirk only closed?你想提取它吗?嗯,不,匹配完整的行似乎足以完成我的任务。谢谢!测试你的reghex试试还是