Skip to main content
 首页 » 编程设计

python之正则表达式替换 w 匹配

2025年05月04日23zengkefu

我有诸如“Western Michigan”“Northern Illinois”之类的名称,我需要将它们更改为“W Michigan”和“N Illinois”。以下是我最接近的,但是失败了,因为假设我匹配了“西密歇根”这个词,它抛出了一个错误,并说\2 是一个不匹配的组(\3 似乎返回了我想要的 W)。 (这是 python )

re.sub("^((S)outhern|(E)astern|(W)estern|(N)orthern)", r"\2", long_name) 

请您参考如下方法:

您有 5 个捕获组 - 但这已经解释过了。如果将其减少到 1 个捕获组,则可以轻松获得所需内容,但这有点微妙。首先,您使用“积极的先行断言”来确保您正在查看感兴趣的“长词”之一。不过,断言并不匹配任何东西。它只是限制搜索。然后你可以捕获后面的字母,并使用其余的。像这样:

pat = r"""(?=Southern|Eastern|Western|Northern)  # looking at one of these words 
          (.)   # just capture the first character 
          (outhern|astern|estern|orthern)  # and consume the rest""" 
pat = re.compile(pat, re.VERBOSE) 
pat.sub(r"\1", long_name)