正则表达式并使用python替换字符串

时间:2013-08-04 13:39:16

标签: python regex

我对Python Regex(一般的正则表达式)很新,我遇到了一个问题。所以,我有一些像这样的字符串:

str1 = r'''hfo/gfbi/mytag=a_17014b_82c'''
str2 = r'''/bkyhi/oiukj/game/?mytag=a_17014b_82c&'''
str3 = r'''lkjsd/image/game/mytag=a_17014b_82c$'''

&$可以是任何符号。

我想要一个正则表达式(和替换)替换:

mytag=a_17014b_82c

为:

mytag=myvalue

来自上述3个字符串中的任何一个。将不胜感激任何关于如何实现这一目标的指导。

UPDATE:要替换的字符串总是不一样。所以,a_17014b_82c可能是现实中的任何事情。

3 个答案:

答案 0 :(得分:1)

如果要替换的字符串是常量,则不需要正则表达式。只需使用replace

>>> str1 = r'''hfo/gfbi/mytag=a_17014b_82c'''
>>> str1.replace('a_17014b_82c','myvalue')
'hfo/gfbi/mytag=myvalue'

答案 1 :(得分:1)

使用re.sub

>>> import re
>>> r = re.compile(r'(mytag=)(\w+)')
>>> r.sub(r'\1myvalue', str1)
'hfo/gfbi/mytag=myvalue'
>>> r.sub(r'\1myvalue', str2)
'/bkyhi/oiukj/game/?mytag=myvalue&'
>>> r.sub(r'\1myvalue', str3)
'lkjsd/image/game/mytag=myvalue$'

答案 2 :(得分:0)

import re
r = re.compile(r'(mytag=)\w+$')
r.sub(r'\1myvalue', str1)

这是基于@Ashwini的答案,我们正在说两个小的变化是mytag=a_17014b部分应该在输入的末尾,所以即使输入如

str1 = r'''/bkyhi/mytag=blah/game/?mytag=a_17014b_82c&'''

将正常工作,替换最后一个mytag而不是第一个mytag。

另一个小小的变化是我们没有不必要地捕获\w+,因为我们还没有使用它。这只是为了清晰的代码。