2013-08-29 2 views
0

У меня есть две строкиполучить регулярное выражение группы, только если соответствующие

"#string1" (1111) {string2} 
"#string1" (1111) 

Я хотел бы написать регулярное выражение, которое будет соответствовать три группы. Для первой строки:

1 => #string1 
2 => 1111 
3 => string2 

и для второй строки

1 => #string1 
2 => 1111 
3 => 

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

Как мне выглядеть regexp?

+0

Любой конкретный язык? –

+0

** Покажите нам, что вы пробовали до сих пор. ** Не описывайте это, но отредактируйте вопрос и вставьте фактический код. Тогда скажите нам, что не получилось. Что случилось, когда вы попробовали? Получили ли вы неправильные результаты? Вы получили * нет * результаты? Если результаты были неверными, что сделало их неправильными? Что вы ожидали вместо этого? Вы получили * любые * правильные результаты? Если да, то каковы они? Не заставляй нас гадать. –

ответ

3

Try с:

^"([^"]*)" \(([^)]*)\)(?: \{([^}]*)\})?$ 
+0

именно то, что мне нужно, спасибо :) – kasztelan

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