使用修改后的模式进行正则表达式搜索和替换 - Python

4

使用正则表达式模式匹配查找字符串并操作它,然后返回它,这个可能吗?

例如:

mazda mazda6 mazda 6 mazda3 mazda2 

我希望用'6','3','2'替换'mazda6','mazda3','mazda2'。我可以使用正则表达式(mazda\d)轻松找到它们,但我不知道如何用匹配模式的修改版本(即\d应该保留)替换它们。

期望输出:

mazda 6 mazda 6 3 2
2个回答

6
你可以在正则表达式中捕获数字,并在替换中使用它的反向引用:
str = "mazda mazda6 mazda 6 mazda3 mazda2"

result = re.sub(r'\bmazda(\d+)', r'\1', str)

输出:

>>> print result
'mazda 6 mazda 6 3 2'

RegEx Demo


0

您可以使用前瞻断言来要求后面跟着一个数字,而不实际匹配它:

str = "mazda mazda6 mazda 6 mazda3 mazda2"
re.sub(r'mazda(?=\d+)', r'', str)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接