繁体   English   中英

Python替换整个单词,包括初始特殊字符

[英]Python replace whole word including initial special character

我有这段代码:

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 个以 $ 开头的符号)。

有任何想法吗?

您可以使用此正则表达式实现您想要的:

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

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

regex101 上用替换检查一下。

输出:

success VAR $success $VAR1 $VAR1success$VAR2 success

让我知道这是否有帮助!

您可以像这样以负面展望来做到这一点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM