[英]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.