【发布时间】:2018-10-04 07:10:59
【问题描述】:
早上好,
我有一个字符串,我需要解析和打印两个命名组的内容,知道其中一个可能不存在。
字符串看起来像这样(基本上是 /proc/pid/cmdline 的内容):
"""
<some chars with letters / numbers / space / punctuation> /CLASS_NAME:myapp.server.starter.StarterHome /PARAM_XX:value_XX /PARAM_XX:value_XX /CONFIG_FILE:myapp.server.config.myconfig.txt /PARAM_XX:value_XX /PARAM_XX:value_XX /PARAM_XX:value_XX <some chars with letters / numbers / space / punctuation>
"""
我的流程有几乎相同的模式,即:
/CLASS_NAME:myapp.server.starter.StarterHome 始终存在,但
/CONFIG_FILE:myapp.server.config.myconfig.txt 并不总是存在。
我正在使用带有re 模块的python2 来捕获值。到目前为止,我的模式看起来像这样,我能够捕捉到与/CLASS_NAME对应的我想要的值
re.compile('CLASS_NAME:\w+\W\w+\W\w+\W(?P<class>\w+)')
因为/CONFIG_FILE 存在与否,我在myregexp 中添加了以下内容:
re.compile(r"""CLASS_NAME:\w+\W\w+\W\w+\W(?P<class>\w+).*?
(CONFIG_FILE:\w+\W\w+\W\w+\W(?P<cnf>\w+.txt))?
""", re.X)
我的理解是我的rexexp 的第二部分是可选的,因为整个部分在括号之间,后跟?。
不幸的是,我的假设是错误的,因为它无法捕捉到它
我也尝试删除第一个?,但没有帮助。
我通过PYTHEX 尝试了几次,试图理解我的正则表达式,但找不到解决方案。
任何人有什么建议可以解决我的问题吗?
【问题讨论】:
标签: python regex grouping named