Регулярное выражение для сопоставления нескольких групп текста - PullRequest
0 голосов
/ 08 июня 2011

Я не уверен, возможно ли это в Regex, но я хочу что-то вроде ...

Введите:

a="abc1"
...some stuff...
a="def1"
...some stuff...
a="ghi1"
...some stuff...
b="123a"
...some stuff...
a="abc2"
...some stuff...
a="def2"
...some stuff...
a="ghi2"
...some stuff...
b="123b"
...some stuff...
a="abc3"
...some stuff...
a="def3"
...some stuff...
a="ghi3"
...some stuff...
b="123c"
...some stuff...

хочет:

match_1 = 123a
match_1_1 = abc1
match_1_2 = def1
match_1_3 = ghi1

match_2 = 123b
match_2_1 = abc2
match_2_2 = def2
etc.

Попытка:

a="([^"]+)"[\D\W\S]+b="([^"]+)"

Это получит первые "a = abc ..." и "b = 123 ..." каждого раздела, но не группирует "def ..." и далее.

Аромат регулярных выражений - тот, что в JMeter, который, я считаю, является Perl.

Любое предложение или комментарий приветствуется, :)

1 Ответ

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

Будет ли это соответствовать вашим потребностям?

(?:a="([^"]+)".*?)(?:a="([^"]+)".*?)(?:a="([^"]+)".*?)b="([^"]+)"

Вы можете увидеть это здесь, в Regexr

Группы расположены в том порядке, в котором они отображаются на входе

Группа 1 = abc1
Группа 2 = def1
Группа 3 = ghi1
Группа 4 = 123a

Вам необходимо включить \ s (модификатор dotall), чтобы . соответствовал символам новой строки.(?:) являются не захватывающими группами.

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