Есть несколько причин, ваше регулярное выражение не возвращают нужный матч:
Вашего регулярное выражение на самом деле не соответствует
* ws-stage-stat
≠ stage-player-stat
, так что вы не получите матч.
** Также принимается во внимание non-word chars
, multiple lines
, или upper/lowercase
.
Использование match groups
позволит вам захватить нужные части строки.
Непонятно, что вы пытаетесь сделать в любом случае. Как говорили другие, лучше было бы использовать библиотеку или конкретный синтаксический анализатор; Я не тот, кто защищает то или другое, но то, что работает.
Если вы хотите, чтобы соответствовать вашей строке (JSON?) С использованием регулярных выражений, хотя, в том числе других сайтов, то вы могли бы сделать что-то вроде:
p = re.compile(ur'\'(.*)\'|(\w+):\s(.+(?=[,])|.+\n)')
list = re.findall(p, str)
print(list)
результата:
[(u'', u'url', u"'stage-player-stat'\n"), (u'', u'defaultParams', u'{\n'), (u'', u'stageId', u'9155'), (u'', u'teamId', u'32'), (u'', u'playerId', u'-1'), (u'', u'field', u'2\n'), (u'', u'url', u"'ws-stat'\n"), (u'', u'defaultParams', u'{\n'), (u'', u'stageId', u'9155'), (u'', u'teamId', u'32'), (u'', u'playerId', u'-1'), (u'', u'field', u'2\n'), (u'', u'stageId', u'9155'), (u'', u'teamId', u'32'), (u'', u'playerId', u'-1')]
это выглядит JSON-иш. .. вы действительно хотите обрабатывать его с помощью регулярных выражений? – andi
@JakubJirutka Я давно не использовал Python, и я никогда раньше не использовал парсер JSON. – gdogg371
@ user3045351 Ну, тогда вы должны сначала прочитать [this] (https://docs.python.org/3.4/library/json.html). –