gpt4 book ai didi

python:用减号替换精确

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:50 25 4
gpt4 key购买 nike

给定以下字符串:

"-local locally local test local."

我的目标是用“we”替换字符串“local”,这样结果就变成了

"-local locally we test local."

到目前为止(在 stackoverflow 的帮助下:Python: find exact match)我已经能够想出以下正则表达式:

variable='local'
re.sub(r'\b%s([\b\s])' %variable, r'we\1', "-local locally local test local.")

但是这段代码有两个问题:

  1. 搜索通过减号,输出变为:

    '-we locally we test local.'

    它应该在的地方

    '-local locally we test local.'
  2. 搜索以减号开头的字符串(例如“-local”)会失败

最佳答案

尝试以下操作:

re.sub(r'(^|\s)%s($|\s)' % re.escape(variable), r'\1we\2', some_string)

另一个问题中建议的正则表达式有点奇怪,因为字符类中的 \b 表示退格字符。

基本上,您现在拥有的是一个正则表达式,用于搜索以单词边界为开头(从单词字符到非单词字符,反之亦然)和结尾为空白字符的目标字符串。

由于您不想匹配最后的“本地”,因为它后面跟着一个句点,所以我不认为单词边界是去这里的方式,而是您应该寻找空格或开头/结尾字符串,这就是上述正则表达式的作用。

我还在变量上使用了 re.escape,如果您在目标字符串中包含一个字符,例如 .$通常具有特殊含义,它们将被转义并解释为文字字符。

例子:

>>> s = "-local locally local test local."
>>> variable = 'local'
>>> re.sub(r'(^|\s)%s($|\s)' % re.escape(variable), r'\1we\2', s)
'-local locally we test local.'
>>> variable = '-local'
>>> re.sub(r'(^|\s)%s($|\s)' % re.escape(variable), r'\1we\2', s)
'we locally local test local.'

关于python:用减号替换精确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com