【问题标题】:Python regex: substitute all occurrence of a certain string NOT after a specific characterPython正则表达式:在特定字符之后替换某个字符串的所有出现
【发布时间】:2014-07-03 22:45:44
【问题描述】:

如何在 Python 中的特定字符之后替换所有出现的特定字符串?

例如,我想将所有出现的abc NOT 替换为 x 之前的 def。代码如下:

re.sub(r'(^|[^x])abc', r'\1def', string)

如果字符串没有连续的abcs,则代码可以完美运行。但是,如果我有string='abcabc',代码将无法工作。有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: python regex


    【解决方案1】:

    带有否定的lookbehind 断言(?<!...) (即前面没有)

    (?<!x)abc
    

    在替换中:

    re.sub(r'(?<!x)abc', r'def', string)
    

    【讨论】:

      【解决方案2】:
      result = re.sub("(?<!x)abc", "def", subject)
      
      • (?&lt;!x) 的否定后视断言前面的不是x
      • abc 匹配 abc
      • 我们替换为def

      参考

      【讨论】:

        猜你喜欢
        • 2023-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2017-06-23
        • 2022-11-07
        相关资源
        最近更新 更多