【问题标题】:Python: replace all instances of alphanumeric substring, excluding higher order numbersPython:替换字母数字子字符串的所有实例,不包括高阶数字
【发布时间】:2019-04-02 15:49:06
【问题描述】:

使用 re.sub,我正在尝试查找并替换字母数字子字符串的所有实例(例如 run1),除了数字是更高阶数的子字符串实例(例如 run12)。

我认为后向 (?<![0-9]) 会阻止“run12”匹配,但我不熟悉它的用法,可能使用不正确。

import re

mystring = '/mypath/run1/run12_run1_file.txt'
mynewstring = re.sub(r'run1(?<![0-9])',r'run2',mystring)
print mynewstring

理想情况下,这会返回:

/mypath/run2/run12_run2_file.txt

相反,它什么都不匹配并返回:

/mypath/run1/run12_run1_file.txt

有什么建议吗?

【问题讨论】:

  • run1_怎么样
  • 这不会取代 run1/,但 blhsing 的回答有所帮助......我应该使用前瞻而不是后瞻。

标签: python regex replace


【解决方案1】:

您应该使用否定的lookahead 而不是否定的lookbehind,因为您试图避免匹配后跟数字的run1

mynewstring = re.sub(r'run1(?!\d)', 'run2', mystring)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 2010-12-20
    • 1970-01-01
    • 2011-09-29
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多