Доброе утро,
У меня есть строка, которую мне нужно проанализировать и распечатать содержимое двух именованных групп, зная, что одна может не существовать.
Строка выглядит так (в основном содержимоеof / 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
НЕ всегда присутствует.
Я использую python2 с модулем re
для перехвата значений.Пока мой шаблон выглядит следующим образом, и я могу поймать нужное значение, соответствующее /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
является необязательной, поскольку вся часть находится в скобках, за которыми следует ?
.
К сожалению, мое предположение неверно, так какне смог поймать
Я также попытался удалить 1-й ?
, но это не помогло.
Я сделал несколько попыток через PYTHEX
, чтобы попытаться понять мое регулярное выражение, но не смогне могу найти решение.
Может ли кто-нибудь предложить решение по моему делу?