使用正则表达式作为替换器,通过re.sub()替换字符串

时间:2014-10-10 13:00:12

标签: python regex string

string = "@ABlue , @Red , @GYellow, @Yellow, @GGreen"
new = re.sub('(@[A-Z][A-Z])', "########" , string)

我需要一个正则表达式,能够通过两个大写字母检查@ follow,然后删除@和第一个大写字符.c

2 个答案:

答案 0 :(得分:1)

使用捕获组和反向引用:

>>> import re
>>> string = "@ABlue , @Red , @GYellow, @Yellow, @GGreen"
>>> re.sub('@[A-Z]([A-Z])', r"\1" , string)
'Blue , @Red , Yellow, @Yellow, Green'
替换字符串中的

\1将替换为第一个捕获组(第二个大写字母)。

注意使用r"raw string literal"。否则,您需要转义\"\\1"

使用positive lookahead assertion替代方案:

>>> re.sub('@[A-Z](?=[A-Z])', '' , string)
'Blue , @Red , Yellow, @Yellow, Green'

答案 1 :(得分:0)

>>> new = re.sub(r"@[A-Z]([A-Z])", r"\1" , string)
>>> new
'Blue , @Red , Yellow, @Yellow, Green'