我正在尝试运行替换正则表达式,但我看到奇怪的行为。
在循环中我有:
var = "HELLO"
result = re.subn("\\b"+var+'\\b \\+ \\"', "sample_replacement_text", text)
这不起作用,但是如果我取值var并将其直接放在result = re.subn('\\bHELLO\\b \\+ \\"', "sample_replacement_text", text)
知道为什么吗?几个小时我一直在挠头。
答案 0 :(得分:0)
我不知道你要用正则表达式完成什么,但这就是它的作用:
它会查找以单词边界开头的模式,然后是您的var
单词,后跟另一个边界,后跟+
,最后是"
。以下是它的一个实例:
import re
var = "HELLO"
result = re.subn("\\b"+var+'\\b \\+ \\"', "foo", 'word HELLO + " word more words')
print(result)
它正确删除HELLO + "
并用foo替换它。如果你打算使用plus来进一步连接而不是文字,你就不应该逃避它。
编辑:
对于我尝试做的更真实的例子,我有一个配置文件使用占位符变量,我想用字符串文字替换:
visibility = [
# blah blah comment
VAR + ":sample_package",
VAR + "/some_other_path",
],
运行替换
var = 'VAR'
re.subn("\\b"+var+'\\b \\+ \\"', "my_replacement", text)
应该产生
visibility = [
# blah blah comment
"my_replacement:sample_package",
"my_replacement/some_other_path",
],
但它保持不变