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