繁体   English   中英

Python正则表达式字符串串联与文字

[英]python regex string concatenation vs literal

我正在尝试运行替代正则表达式,但发现行为异常。

在一个循环中,我有:

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

这无法正常工作,但是如果我采用var的值并将其直接放入result = re.subn('\\\\bHELLO\\\\b \\\\+ \\\\"', "sample_replacement_text", text)

知道为什么吗? 我已经伤心了好几个小时了。

我不知道您要使用该正则表达式尝试完成什么,但这是它的作用:

它寻找一种模式,该模式以单词边界开头,然后是您的var单词,然后是另一个边界,之后是+ ,最后是一个" 。这是一个实际的示例:

import re
var = "HELLO"
result = re.subn("\\b"+var+'\\b \\+ \\"', "foo", 'word HELLO + " word more words')
print(result)

它正确地删除了HELLO + "并将其替换为foo。如果您打算使用加号而不是文字来进行进一步的串联,则不应转义它。

编辑:

对于我要尝试做的更真实的示例,我有一个配置文件,该文件使用一个占位符变量,该变量要用字符串文字替换:

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

但它保持不变

暂无
暂无

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

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