2015-11-23 2 views
-1

Я хотел бы разделить многострочный текст на. Somethigne так:Захват нескольких групп в одной строке

вход:

aaaa aaaa aaaa. bbbb bbbb bbbb. 
cccc cccc. dddd. 

требуемый результат:

[0]: aaaa aaaa aaaa. 
[1]: bbbb bbbb bbbb. 
[2]: cccc cccc. 
[3]: dddd. 

Это просто думаю, что делать, но я не мог это сделать .. я даже не знаю, как найти это в Google. Я пробовал много примеров, таких как /(.+[.])/igm, но он получает результаты с полным текстом строки, а не разделен на "."

Как я могу это сделать?

+0

'+' обычно жадный по умолчанию. добавьте '' 'like'. +? ', чтобы перейти к не-жадному ИЛИ изменить'. + 'на' [^.] + ', чтобы соответствовать всем символам non' .' –

+0

В вашем примере вы просто «сопоставляете» " шаблон. То, что вы делаете с этой группой позже, является ключевым. Итак, на каком языке вы это делаете? и вы уверены, что не просто просто использовать функцию языка для разделения, а не регулярное выражение? – sidyll

+0

Если вы используете PHP, используйте функцию 'explode'. http://php.net/manual/en/function.explode.php Кроме того, вы действительно пытаетесь извлечь предложения? Это может вызвать морщины в вещах. –

ответ

1

Если вы хотите захвата группы:

([^.]*.) with g flag 

, если вы хотите, чтобы пропустить пробел после . (dot):

([^.]*.)\s? 

видеть результат здесь:

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

1

Ваш .+ Будет соответствовать ANY chara cter, включая буквенный символ '.'. Вот почему это соответствует всему. Вам нужно указать, что он должен принимать один или несколько символов, которые не являются символами '.' а затем «.». Итак, ваше регулярное выражение будет: /([^.\n]+[.])/igm. Кстати, я также включил остановку в новых линиях, так как ваш желаемый результат не включал новую строку. Вы можете удалить это, если хотите. Вот демо-версия: http://www.regexpal.com/?fam=93474.

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