我正在尝试匹配python中的以下行,但是这行不起作用。
示例文字是:
usr/local/java/latest/bin/java-Djava.util.logging.config.file=/usr/local/tomcat/foobarcode/conf/
示例python:
re.match(r"/usr/local/java/latest/bin/java[-]Djava[.]util[.]logging[.]config[.]file[=]/usr/local/tomcat/(\.*)/conf/\.*", pidInfo)
我们将非常感谢您提供的任何帮助。谢谢!
答案 0 :(得分:1)
问题是你逃脱了.
。这使它成为一个字面时期。你想让它不转义,以便它成为通配符:
re.match(r"/usr/local/java/latest/bin/java-Djava[.]util[.]logging[.]config[.]file=/usr/local/tomcat/(.*)/conf/.*", pidInfo)
此外,您的输入示例不包含前导/
,但这可能是复制粘贴错误。 (请注意,无需转义=
和-
)。
答案 1 :(得分:1)
以下是您尝试执行的修复版本:
>>> s = '/usr/local/java/latest/bin/java-Djava.util.logging.config.file=/usr/local/tomcat/foobarcode/conf/'
>>> re.match(r'/usr/local/java/latest/bin/java-Djava\.util\.logging\.config\.file=/usr/local/tomcat/(.*)/conf/.*', s)
<_sre.SRE_Match object at 0x1004a0648>
的问题:
.
转义为通配符\.
([.]
工作得很好,只是不那么优雅的IMO)/
-
和=
字符不需要转义