在结果字符串或re.sub函数中保留搜索字符串中使用的空格



我正在遍历一个字典,并用它的值替换字符串中的任何键。我正在搜索两个条件,在标准的python字符串格式中如下所示:if (' '+key+'' in x) or (x.startswith(key)): x = x.replace(key, matches[key])

理想情况下,我希望使用正则表达式来进行此替换。

目前我正在使用re.sub(r'(^|s)FIRST(s)', '1st', string)它正确地实现了查找要替换的字符串的条件,但输出消耗了搜索模式中的空格字符。例如:

strings = ['FIRST BASE', 'TWENTYFIRST ST.', 'CHRISTS FIRST CHURCH', 'TWENTY FIRST']
for string in strings:
print((re.sub(r'(^|s)FIRST(s)', '1st', string)))

打印:

1stBASE
TWENTYFIRST ST.
CHRISTS1stCHURCH
TWENTY FIRST

如何在不丢失空格的情况下搜索被空格包围的字符串并替换为值?

您可以使用:

(^|s+)FIRST($|s+)

演示

或者有负面的前瞻和负面的前瞻:

(?<!S)FIRST(?!S)

演示

最新更新