我正在尝试用其他内容替换单个 $
字符,并想连续忽略多个 $
字符,但我不太明白如何操作。我尝试使用前瞻:
s='$a $$b $$$c $d'
re.sub('\$(?!\$)','z',s)
这给了我:
'za $zb $$zc zd'
当我想要的是
'za $$b $$$c zd'
我做错了什么?
最佳答案
注释,如果不使用可调用的替换函数:
- 您将需要向前看,因为如果后跟
$
则您不能匹配
- 您将需要向后看,因为如果前面有
$
,则您不能匹配
不那么优雅,但是可读性很强:
>>> def dollar_repl(matchobj):
... val = matchobj.group(0)
... if val == '$':
... val = 'z'
... return val
...
>>> import re
>>> s = '$a $$b $$$c $d'
>>> re.sub('\$+', dollar_repl, s)
'za $$b $$$c zd'
关于python - 用 python regexp 只替换一个字符的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644300/