python正则表达式字符串连接vs文字

时间:2017-08-29 23:20:11

标签: python regex string concatenation

我正在尝试运行替换正则表达式,但我看到奇怪的行为。

在循环中我有:

var = "HELLO"
result = re.subn("\\b"+var+'\\b \\+ \\"', "sample_replacement_text", text)

这不起作用,但是如果我取值var并将其直接放在result = re.subn('\\bHELLO\\b \\+ \\"', "sample_replacement_text", text)

知道为什么吗?几个小时我一直在挠头。

1 个答案:

答案 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",        
],

但它保持不变