【问题标题】:Python replace whole word including initial special characterPython替换整个单词,包括初始特殊字符
【发布时间】:2017-02-08 01:39:50
【问题描述】:

我有这段代码:

import re


variable_to_be_replaced = '$VAR'
value_to_set = 'success'
sample_string = '$VAR VAR $$VAR $VAR1 $VAR1$VAR$VAR2 $VAR'

print re.sub(r'\b' + variable_to_be_replaced + r'\b', value_to_set, sample_string)

我希望输出为'success VAR $success $VAR1 $VAR1success$VAR2 success',我只能修改打印语句。我知道这不起作用,因为变量名以 $ 开头。分隔符应该是常规的单词分隔符(减去 1 开头的 $ 符号)。

有什么想法吗?

【问题讨论】:

    标签: python regex replace words


    【解决方案1】:

    你可以用这个 RegEx 实现你想要的:

    \$VAR(?=[\s\$]|$)
    

    当后面有空格或 $ 时,它会找到 '$VAR'。更具体地说,我使用Positive Lookahead 来识别字符串中“$VAR”、“$VAR$”或“$VAR”是否是字符串结尾的部分,然后我只替换“$VAR”该匹配的一部分与替换字符串。

    regex101 上查看替换。

    输出:

    success VAR $success $VAR1 $VAR1success$VAR2 success
    

    如果这有帮助,请告诉我!

    【讨论】:

      【解决方案2】:

      你可以像这样消极地向前看:

      import re
      
      s_str = '$VAR VAR $$VAR $VAR1 $VAR1$VAR$VAR2 $VAR'
      print re.sub(r'\$VAR(?!\d)', r'success', s_str)
      

      输出:

      success VAR $success $VAR1 $VAR1success$VAR2 success
      

      正则表达式:

      \$VAR(?!\d) - 搜索 '$VAR' 并在数字字符之前进行否定查找

      演示:https://regex101.com/r/EgXlcD/1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多