修复字符串结尾的否定断言

时间:2016-09-14 03:22:36

标签: python regex-negation regex-lookarounds

我正在尝试仅在模式匹配时才接受捕获组,并且在组结束之前没有特定的单词。我尝试了一些方法,似乎都没有工作,显然我没有得到这个概念:

https://regex101.com/r/iP2xY0/3 https://regex101.com/r/iP2xY0/4

无论我做什么,我的捕获组都捕获了一些东西,我的目标是如果拒绝单词存在于模式的中间而不返回匹配。

RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice))(?!Reject).*
  • RC:*嗨Bob Smith&lt; \ person&gt;
  • RC:*大卫琼斯*笔记Bla bla&lt; \ person&gt;
  • RC:*你好Ted Warren *被拒绝&lt; \ person&gt;

Capture Namegrouop应该返回:

  • 鲍勃
  • 大卫
  • &#39;&#39;

所以&#34;拒绝&#34;如果找到NameGroup Capture,后面跟<结尾的任何东西捕获它,如果在NameGroup和&lt;之间单词Reject似乎没有。

1 个答案:

答案 0 :(得分:0)

我建议您在模式的开头放置负面预测。首先检查你的拒绝单词是否存在于你的字符串中,并且只有在它没有尝试匹配字符串的其余部分时才会这样:

(?!.*Rejected.*)RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice)).*

https://regex101.com/r/iP2xY0/6