【发布时间】:2017-06-28 10:29:06
【问题描述】:
我目前有一个类似于以下的字符串:
str = 'abcHello Wor=A9ld'
我要做的是找到“abc”和“=A9”并将这些匹配的组替换为空字符串,这样我的最终字符串就是“Hello World”。
我目前正在使用这个正则表达式,它可以正确找到我想要替换的组:
r'^(abc).*?(=[A-Z0-9]+)'
我尝试使用以下代码替换这些组:
clean_str = re.sub(r'^(abc).*?(=[A-Z0-9]+)', '', str)
使用上面的代码导致:
print(clean_str)
>>> 'ld'
我的问题是,如何使用 re.sub 将这些组替换为空字符串并获取我的“Hello World”?
【问题讨论】:
-
捕获您想要保留的内容,而不捕获您想要删除的内容。在替换字符串中使用对捕获组的引用。
-
也许您想替换多次出现的
=[A-Z0-9]+?那就试试re.sub(r'^abc|=[A-Z0-9]+', '', s) -
@WiktorStribiżew 有没有一种方法可以让我使用你的正则表达式,同时确保 abc 存在,否则不要替换第二个模式?
-
不是
re,你只需要检查字符串是否以abc开头,然后使用re.sub(r'=[A-Z0-9]+', '', s[3:])。或者,如果您使用 PyPiregex模块,则可以使用 1 个正则表达式。 -
我用 2 个解决方案添加了我的答案:1)基于 Python
re,分 2 个步骤,2)基于无限宽度后向模式的 PyPi。