2015-02-10 3 views
-1

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

\[\s*(?<g1>(?i:Critical|Urgent)):\s*(?<g2>.+)\] 

Пример:

lorem ipsum [Urgent: do something] lorem ipsum [Critical: do something else] lorem ipsum 

В идеале g1 будет содержать [ 'срочно', 'Critical'] и g2 будет содержать [ 'делать что-то', 'сделать что-то еще']

ответ

0

This regex будет иметь два матча, каждый с двумя группами.

\[(Critical|Urgent):\s?(.*?)\]

С http://regexr.com/ вы можете проверить регулярные выражения в Интернете. Это здорово для того, чтобы узнать, почему они не работают, так как вы можете навести курсор на каждую часть вашего регулярного выражения и посмотреть, что он делает.