1

我对 Python 正则表达式(一般的正则表达式)相当陌生,我一直遇到问题。所以,我有一些这样的字符串:

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$'''

the&和 the$可以是任何符号。

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

mytag=a_17014b_82c

至:

mytag=myvalue

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

更新:要替换的字符串总是不一样的。所以,a_17014b_82c可能是现实中的任何东西。

4

3 回答 3

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$'
于 2013-08-04T13:48:36.027 回答
1

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

>>> str1 = r'''hfo/gfbi/mytag=a_17014b_82c'''
>>> str1.replace('a_17014b_82c','myvalue')
'hfo/gfbi/mytag=myvalue'
于 2013-08-04T13:42:46.143 回答
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 而不是第一个。

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

于 2013-08-04T14:04:47.837 回答