2013-04-17 5 views
0

Моя строка выглядит следующим образом:Regex получает группу из файла

Especificação do Título 

GRND3 - GRENDENE 

GRND3 - GRENDENE 

POSI3 - POSITIVO INF 

Мне нужно получить GRND3, GRND3, POSI3 в 3 разделенных групп.

Есть ли выражение, что я могу сделать это легко?

+6

Какой язык программирования? –

+1

Конечно. Что вы пробовали? Какой язык или инструмент вы используете? Что вы подразумеваете под группой? –

+0

@ m.buettner: group == capture? – bobrobbob

ответ

1

Проблема с указанием конкретного языка заключается в том, что ^ может означать начало строки или начало текста.

Если ^ означает начало строки:

"^(\w+) -" 

должна охватывать его. Затем вы получаете первую группу (опять-таки конкретную для языка).

Если ^ означает начало текста (также будет работать в описанном выше случае):

Существуют различные линии сепараторов на разных системах, но в целом это должно работать:

"\n(\w+) -" 

и снова получить первой группы.

Обратите внимание, что я предполагаю, строку, которую вы хотите получить состоит только из букв и цифр, в этом случае \w+ (что означает один или несколько (+) символов слова (буква или цифра)) и эта строка сопровождается пробел затем -.

Не уверен, что вы подразумеваете под «3 разделенных групп», вы вообще просто перебрать все матчи, но если вы хотите, чтобы соответствовать их в 1 регулярное выражение, что-то вроде этого следует сделать это:

"\n(\w+) - (?:\w|\s)*\r?\n(\w+) - (?:\w|\s)*\r?\n(\w+) -" 

, хотя это некрасиво, трудно поддерживать и понимать и подвержено ошибкам.

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