在python中,需要用变量替换Regex字符串中找到的组。但只是替换组,而不是整个正则表达式的结果。
这是我到目前为止所做的:
content = "FILE_NAME(
/* name */
'test_name_to_replace.stp',
/* time_stamp */ '2018-05-28T14:34:32+02:00',
/* author */ (''),
/* organization */ (''),"
replaceVariable = "New_Name.stp"
regex = r"(name.*\n*').*.stp"
subst = r"$1%s" % re.escape(replaceVariable)
New_Content = re.sub(regex, subst, content, 0, re.MULTILINE)
结果我来自搜索" regex"是:
name */
'test_name_to_replace.stp
其中第1组是
name */
'
和第0组是
test_name_to_replace.stp
我需要保留第1组并替换第0组 但是子字符串在变量之前没有使用特殊字符$ 1,我得到这样的结果:
New_Content = "FILE_NAME(
$1New_Name.stp',
/* time_stamp */ '2018-05-28T14:34:32+02:00',
/* author */ (''),
/* organization */ (''),"
删除group1
答案 0 :(得分:0)
文档始终是您的朋友,因为Regular Expression Syntax中已明确记录了这些文档:
\number
匹配相同数字组的内容。
但是你不需要在这里匹配组,尝试使用:
然后:
subst = "'{}'".format(replaceVariable)
re.sub(r"\'(\w+\.stp)\'", subst, content, 0, re.MULTILINE)
# Result
FILE_NAME(
/* name */
'New_Name.stp',
/* time_stamp */ '2018-05-28T14:34:32+02:00',
/* author */ (''),
/* organization */ (''),