python正则表达式替换组与变量

时间:2018-05-30 16:42:56

标签: python regex regex-group

在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

1 个答案:

答案 0 :(得分:0)

文档始终是您的朋友,因为Regular Expression Syntax中已明确记录了这些文档:

  
      
  • \number

         

    匹配相同数字组的内容。

  •   

但是你不需要在这里匹配组,尝试使用:

\'(\w+\.stp)\'

然后:

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 */ (''),