如何避免在 #

问题描述 投票:0回答:1

我必须找到字符串在 # 在 python 中使用正则表达式之前的任何地方都没有单词(作为单词边界) abc、def 或 ghi

他是 abc 但 # 不是 xyz - 不匹配

他很好#但是很小 - 匹配

他可能会 ghi 但 # 不会 abc 会 - 不匹配

他会帮忙,但#希望def能来 - 比赛

他要去 vabc 但 # 不确定 - 比赛

这是包含字符串的列表

l=["he is abc but # not xyz",
"he is good # but small",
"he might ghi but # not abc will",
"he will help but # hope for def to come",
"he is going for vabc but # not sure"]

应该打印出来

["he is good # but small", "he will help but # hope for def to come", "he is going for vabc but # not sure"]

尝试在正则表达式中使用负向前看概念

^(?!.*\b(?:abc|def|ghi)\b).*#

但无法达到确切的结果

python regex
1个回答
5
投票

将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。

您可以使用这个正则表达式:

^(?![^#]*\b(?:abc|def|ghi)\b)[^#]*#.*

正则表达式演示

正则表达式详细信息:

  • ^
    :开始
  • (?![^#]*\b(?:abc|def|ghi)\b[^#]*#)
    :如果在稍后的匹配中匹配
    abc
    之前出现单词
    def
    ghi
    #
    ,则否定前瞻会使匹配失败
  • [^#]*
    :匹配 0 个或多个非
    #
  • 的任何字符
  • #
    :匹配
    #
  • .*
    :之后匹配任何内容
© www.soinside.com 2019 - 2024. All rights reserved.