通过Python脚本发布Perl Regex问题

时间:2014-06-02 16:17:20

标签: python regex python-2.7 subprocess

在unix框上运行python脚本时遇到问题,该框调用perl命令,该命令使用正则表达式替换属性文件中的密码。

var= folderHome+"/conf/cs.properties"
process = subprocess.call(["perl", "-i", "-pe", "s/(?<=password=)\w+/\1mynewordtesting/", var])

当使用下面的python片段时,它会很好地替换密码,但会添加一个&#39; SOH&#39; char如下所示

'SOH' Problem

但是直接在命令行中使用相同的命令将正确替换密码

1 个答案:

答案 0 :(得分:0)

\1转移到\\1; Python将其视为十六进制字节01的转义序列:

>>> '\1'
'\x01'

所以:

process = subprocess.call([
    "perl", "-i", "-pe",
    "s/(?<=password=)\w+/\\1mynewordtesting/", var])

或者,使用原始字符串文字;然后忽略转义序列:

process = subprocess.call([
    "perl", "-i", "-pe", 
    r"s/(?<=password=)\w+/\1mynewordtesting/", var])