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 个起始 $ 符号)。
有什么想法吗?
你可以用这个 RegEx 实现你想要的:
$VAR(?=[\s$]|$)
当它后面有 space 或 $ 时,它会找到 '$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'
我有这段代码:
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 个起始 $ 符号)。
有什么想法吗?
你可以用这个 RegEx 实现你想要的:
$VAR(?=[\s$]|$)
当它后面有 space 或 $ 时,它会找到 '$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'