python - 用 python regexp 只替换一个字符的单个实例

标签 python regex

我正在尝试用其他内容替换单个 $ 字符,并想连续忽略多个 $ 字符,但我不太明白如何操作。我尝试使用前瞻:

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/

相关文章:

python - 当我的凭证有效时,为什么我不能将我自己的包上传到 PyPI?

python - Python 中的高效矢量/点类

java - 笑脸的正则表达式模式无法区分负号和范围

python - 按字符大小分割,但在 Python 正则表达式中完全包含单词

javascript - Websocket 是否发送和接收完整消息?

python - 将循环 block 转换为列表理解

regex - Python字符串匹配

python - 正则表达式搜索多个后缀

使用 xrange 进行 Python 字符串操作

javascript - 如果 JavaScript 中的特定单词匹配,则替换行