使用特定单词进行匹配,如果使用Regex-python找到一组否定词,则取消显示文本



示例:

文本1:夏尔马先生关于以下问题的信件的接收和起草:可参加和解会议。

文本2:收到并审查夏尔马先生关于以下问题的信函:可参加和解会议。

问题:如果一行包含类似";出席%"赋予%";或";呼叫%";那么它应该在该行的任何地方找到匹配,但如果同一行也包含类似"匹配"的单词;检查%";以及";草稿%";那么它应该忽略该行中的任何位置。

因此,文本1不应该匹配,因为它包含单词";"绘图";,而文本应该匹配,因为它不包含抑制项,如支票%和汇票%

尝试过:(battend|bconfer|bcall)(?!.*?b(check|draf)).*

我需要python中的单行regex解决方案。有人愿意在这里帮我吗?

您应该将负前瞻断言放在一行的开头:

^(?!.*(?:bcheck|bdraf)).*(battend|bconfer|bcall)

演示:https://regex101.com/r/EtBSX4/1

这个表达式执行您要查找的操作:

(?=(^(?:(?!b(draft|check)).)*$))(?=.*?(battend|bconfer|bcall))

您可以使用positivelookahead(?=(来首先检查整行是否不包含筛选词,然后查看您想要的词是否存在。

最新更新