Python re模块替换失败排查:替换@include后的配置文件路径
Python正则替换失败的问题修复
你的代码有两个关键错误导致替换失败:
- 正则表达式中的路径匹配部分写错:你使用了
//S+,正确的写法应该是/\S+,其中\S是正则元字符,用来匹配任意非空白字符,前面的单个斜杠对应路径中的分隔符。 - 未转义文件名后缀的
.:正则里的.会匹配任意单个字符,而你需要精准匹配.conf后缀,因此必须把.转义为\.,否则会误匹配类似xconf这类不符合要求的内容。
修正后的代码如下:
import re foo = '<source> @type syslog port 5140 bind 0.0.0.0 @include /etc/aaa/bbb.conf message_format auto tag eeee message_length_limit 16384 </source> ' repl = '/etc/ccc/lg.json' # 修正正则表达式:修正路径匹配语法,转义.conf的点 res = re.sub(r'@include /etc/aaa/\S+\.conf', repl, foo) print(res)
运行这段代码后,就能成功将任意@include /etc/aaa/xxx.conf格式的内容替换为指定的/etc/ccc/lg.json路径。
内容的提问来源于stack exchange,提问作者nathan
相关产品推荐
相关产品推荐

