在python中使用正则表达式匹配替换部分字符串

时间:2016-05-19 08:32:57

标签: python regex

在python中, 我必须用(a is b)替换每个(a,b)的出现,其中a,b是非空字符串,在字符串s中观察到paranthesis是子字符串的一部分。 我打算使用re模块..但我仍然坚持如何在替换字符串中保留a,b。我该怎么做?

Ex:  "you know that (tiger is animal) and kiwi is bird"
     output : "you know that (tiger,animal) and kiwi is bird"

匹配正则表达式是:

 r"\([a-z]+\sis\s[a-z]+\)"

3 个答案:

答案 0 :(得分:3)

re是您案例的更好解决方案:

>>> pat_sub = re.compile(r'(?<=\()\s*?(?P<X>[a-z]+)\s*?is\s*?(?P<Y>[a-z]+)\s*?(?=\))')
>>> 
>>> pat_sub.sub(r'\g<X>,\g<Y>',s)
'you know that (tiger,animal) and kiwi is bird'
>>> 
>>> s
'you know that (tiger is animal) and kiwi is bird'

使用不同的示例查看正则表达式here的突破。

答案 1 :(得分:2)

您可以使用

re.sub(r'(^\([^\s]+)\s+is\s+(.+$)', r'\1,\2', input)

答案 2 :(得分:2)

使用捕获组和反向引用:

re.sub(r"\(([a-z]+)\sis\s([a-z]+)\)", r"(\1,\2)", text)