正则表达式搜索和替换模式与修改模式 - Python

时间:2016-04-01 09:30:12

标签: python regex

是否可以使用正则表达式模式匹配找到一个字符串,操纵它&归还吗?

例如:

mazda mazda6 mazda 6 mazda3 mazda2 

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

理想输出:

mazda 6 mazda 6 3 2

2 个答案:

答案 0 :(得分:3)

您可以捕获正则表达式中的数字,并在替换时使用它的反向引用:

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

答案 1 :(得分:0)

您可以使用look-ahead assertion要求mazda后跟一个数字而不实际匹配它:

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