繁体   English   中英

Python问题中的正则表达式

[英]Regular expression in Python issue

我的配置文件之一中包含以下代码:appPackage_name = sqlncli appPackage_version = 11.3.6538.0

左侧是键,右侧是值。

现在,我希望能够用Python中给定的其他键替换值部分。

import re
Filepath = r"C:\Users\bhatsubh\Desktop\Everything\Codes\Python\OO_CONF.conf"
key = "appPackage_name"
value = "Subhayan"
searchstr = re.escape(key) + " = [\da-zA-Z]+"
replacestr = re.escape(key) + " = " + re.escape(value)
filedata = ""
with open(Filepath,'r') as File:
    filedata = File.read()
File.close()
print ("Before change:",filedata)
re.sub(searchstr,replacestr,filedata)
print ("After change:",filedata)

我认为我使用的正则表达式有问题。 但是我不知道该怎么办。 有人可以帮帮我吗 ?

使用以下修复程序:

import re
#Filepath = r"C:\Users\bhatsubh\Desktop\Everything\Codes\Python\OO_CONF.conf"
key = "appPackage_name"
value = "Subhayan"
#searchstr = re.escape(key) + " = [\da-zA-Z]+"
#replacestr = re.escape(key) + " = " + re.escape(value)
searchstr = r"({} *= *)[\da-zA-Z.]+".format(re.escape(key))
replacestr = r"\1{}".format(value)
filedata = "appPackage_name = sqlncli"
#with open(Filepath,'r') as File:
#    filedata = File.read()
#File.close()
print ("Before change:",filedata)
filedata = re.sub(searchstr,replacestr,filedata)
print ("After change:",filedata)

参见Python演示

有几个问题:您不应该转义替换模式,而只能在正则表达式模式中转义用户定义的文字值。 您可以使用捕获组(一对未转义的(...) )和向后引用(此处为\\1因为该组仅是模式中的一个)恢复您需要保留而不是构建的匹配字符串的一部分动态替换字符串。 由于版本值包含点,因此应添加一个. 到字符类[\\da-zA-Z.] 您还需要在替换后分配新值,以便实际对其进行修改。

暂无
暂无

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

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