Python 如何用修改后的匹配字符串替换正则表达式中的匹配字符串
让我们举一个例子Python 如何用修改后的匹配字符串替换正则表达式中的匹配字符串,python,regex,Python,Regex,让我们举一个例子 这里,让我们说,我不想删除注释,而是想用修改后的匹配文本替换这些注释。例如,将Python风格的注释替换为C风格的注释,以便#这是电话号码变成/*这是电话号码*/。我该怎么做?您可以在替换字符串中使用捕获组和反向引用: >>> phone = "2004-959-559 # This is Phone Number" >>> print re.sub(r'#(.*)$', r'/* \1 */', phone) 2004-959-559 /*
这里,让我们说,我不想删除注释,而是想用修改后的匹配文本替换这些注释。例如,将Python风格的注释替换为C风格的注释,以便
#这是电话号码
变成/*这是电话号码*/
。我该怎么做?您可以在替换字符串中使用捕获组和反向引用:
>>> phone = "2004-959-559 # This is Phone Number"
>>> print re.sub(r'#(.*)$', r'/* \1 */', phone)
2004-959-559 /* This is Phone Number */
捕获第一个捕获组中(.*)
之后的字符串#
是\1
中匹配正则表达式中第一个捕获组的反向引用re.sub
- 为了正确解释
,必须使用原始字符串模式进行替换\1
>
>>>str1=“#这是一个电话号码”
>>>str2=str1。替换(“#”、“/*”)+“*/”
>>>
>>>str2
“/*这是一个电话号码*/”
>>>
使用捕获组?尝试re.sub(r'#(.*)$|\D',lambda x:“/*{}*/.”格式(x.group(1)),如果x.group(1)else“”,phone)
您可以使用:re.sub(r'#(.*),r'/*\1*/',phone)
所以对于任何组,我都需要用括号括起来?其次,$在这里是什么意思?$
是一个零宽度的锚点,用于匹配字符串的结尾,这也是您在问题中遇到的问题。对于捕获组,是的,您需要将模式包含在(
和)
中。我知道一个简单的替换就可以了,但为了便于学习,我只举了一个例子。
>>> phone = "2004-959-559 # This is Phone Number"
>>> print re.sub(r'#(.*)$', r'/* \1 */', phone)
2004-959-559 /* This is Phone Number */