2013-09-14 2 views
0

Я хотел бы выделить все после первых нескольких заглавных слов. т.е.:Regex, который выбирает все после первых последовательных заглавных слов

Terry Smith is a good school teacher. She works tirelessly. 

станет;

is a good school teacher. She works tirelessly. 

До сих пор это не сработало;

(^[A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+)([\s\S]*) 

Я использую его в Друпала каналы НСД плагин с «найти» заменить регулярное выражение функции для того, чтобы заменить все после того, как «Терри Смит» с пустым пространством.

+0

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

ответ

1

Следующее выражение с совпадением всех последовательных заглавных слов в начале предложения.

^(?:(?:[A-Z][a-z]+)(?>\s*))+ 

Regex101 Demo

Если вы хотите, чтобы удалить эту часть из setnence, то все, что вам нужно сделать, это заменить его с пустой строкой.

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

^((?:(?:[A-Z][a-z]+)(?>\s*))+)([\s\S]+) 

и использовать для замены строки $1 или что-то в вашем языке, который используется для ссылки на первый захваченный группа.

Regex101 Demo

0

Найдет столичные слова:

[A-Z][a-z]+(?=\b)\s* 

Regular expression visualization

Вы можете заменить + с * после [a-z] также соответствовать односимвольные капитала слов.

Чтобы получить все заглавные слова в начале строки, добавьте ^( и )+ вокруг него:

^([A-Z][a-z]+(?=\b)\s*)+ 
Смежные вопросы