2017-02-08 2 views
0

получили некоторые конфигурации сервера:.Как получить все повторяющиеся шаблоны регулярных выражений, начав?

((100010,test1.com,((Method,is,INVITE),(To,is,"0000000000*")),(("Redirect to","ccincoming#[email protected]"))),(100010,test2.com,((Method,is,INVITE),(To,is,"00000000000*")),(("Redirect to","ccincoming#[email protected]")),"some text"),(100010,test3.com,((Method,is,INVITE),("Submit Address","is not","LOCAL [0.0.0.0]*"),(Authenticated,is,"*@test3.com")),(("Redirect to","ccincoming#[email protected]"),("Discard Rules"))),(100000,sometext,(("Submit Address",is,sometext)),(("Redirect to","ccincoming#[email protected]"),("Discard Rules"))),(100000,sometext,((Method,is,INVITE),(To,is,"00000000000*")),(("Redirect to","ccincoming#[email protected]")))) 

нужно, чтобы получить каждый шаблон, который начинается с «(1000» и заканчивается в начале следующего

Пробовал «/(\(1000.*. .. \)), \ (1000/GU» Но он получает только нечетные матчи (один раз через)

Таким образом, необходимо, чтобы получить это:

  • (100010, test1.com, ((Метод, есть, INVITE), (To, is, "0000000000 *")), ((«Перенаправление на», «ccincoming#[email protected]»)))

  • (100010, test2.com ((метод, является, INVITE), (к, есть "00000000000 *")), (("Перенаправление", "ccincoming # @ test2 АТС .com "))," некоторый текст ")

  • (100010, test3.com ((метод, является, INVITE), (" Отправить адрес " "не"," LOCAL [ 0.0.0.0] "), (проверено, есть," @ test3.com ")), ((" Перенаправление к», "ccincoming#[email protected]"), ("Отбросить правила")))

  • (100000, SOMETEXT, (("Отправить адрес", есть, SOMETEXT)), (("Перенаправление", "ccincoming # PBx @ SOMETEXT"), ("Выкинуть правила")))

  • (100000, SOMETEXT ((метод, является, INVITE), (к, является "00000000000 *")), (("Перенаправление", "ccincoming#[email protected]")))

Спасибо за помощь!

https://regex101.com/r/xciBIF/1

+0

Какой вид регулярных выражений вы используете? Поддерживает ли он просмотр? –

ответ

1

Сделать что последняя часть а опережения, так что он не ест в свой следующий матч:

\(1000.*\)(?=,\(1000|\)$)

demo

+0

Обратите внимание, что это также будет соответствовать промежуточным частям, которые не начинаются с 1000, если они есть – Aaron

+0

Thats it! Спасибо! – ZeiZ

Смежные вопросы