我对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
可能是现实中的任何事情。
答案 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+
,因为我们还没有使用它。这只是为了清晰的代码。