Группировка в Python Регулярные выражения - PullRequest
0 голосов
/ 21 июня 2011

Так что я играюсь с регулярными выражениями в Python. Вот что я получил (отлажено через RegExr):

@@(VAR|MVAR):([a-zA-Z0-9]+)+(?::([a-zA-Z0-9]+))*@@

Итак, что я пытаюсь сопоставить, это что-то вроде этого:

@@VAR:param1@@
@@VAR:param2:param3@@
@@VAR:param4:param5:param6:0@@

По сути, у вас есть VAR или MVAR, за которым следует двоеточие, затем имя какого-либо параметра, затем конечные символы (@@) или другое: и параметр.

Итак, что я получил для групп в регулярном выражении, так это VAR, первый параметр, а затем последнее, что есть в списке параметров (для последнего примера третья группа будет 0). Я понимаю, что группы создаются с помощью ... ?

Я бы хотел избежать совпадения этой строки с последующим разделением на:, поскольку я думаю, что это можно сделать с помощью регулярных выражений. Возможно, я подхожу к этому неправильно.

По сути, я пытаюсь выяснить, смогу ли я найти и разделить процесс сопоставления, а не постпроцесс.

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Если этот формат исправлен, вам не нужно регулярное выражение, оно только усложняет задачу. Просто используйте split:

text.strip('@').split(':')

должен это сделать.

1 голос
/ 21 июня 2011

Количество групп в регулярном выражении фиксировано.Вам нужно как-то постобработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...