2017-02-13 3 views
3

Относится к настройке Notepad ++. Я знаю, что TextFX «Приговор». существует, но я хотел бы контролировать это, используя собственное регулярное выражение/макрос.Notepad ++ regex, чтобы заглавнить первое слово выбранного предложения

Испытания на: hello my name is john. hello my name is john. hello my name is john.

В настоящее время у меня есть это, который работает хорошо, когда ничего не выбрано/выделено с помощью мыши.

Find what: ((?<=^|(?<=[.!?]\s)))(\w) 
Replace with: \u$0 

Однако, когда я выбираю/выделить второй (средний) предложение только (начиная с h и заканчивая на период .), регулярное выражение ничего не делает. Примечание: У меня есть опция «Использовать выбор» в N ++, и я использую «Заменить все».

Это имеет смысл, потому что регулярное выражение ищет начало строки или шаблон char .!?, за которым следует пробел.

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

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

+0

Знаете, он работает, когда вы нажимаете * Заменить все *, есть проблема с * Заменить *. –

+0

Да - если текст не высвечивается, регулярное выражение, которое я предоставил, отлично работает, но я хочу, чтобы можно было выделить предложение и преобразовать только это предложение в предложение. Поэтому мне нужно расширить регулярное выражение, чтобы охватить этот сценарий, который является моей целью, задав этот вопрос. – u01jmg3

+0

Попробуйте '(^ | [.!?] \ S +) (\ w)' -> '$ 1 \ u $ 2' –

ответ

1

^ соответствует началу строки, в то время как выбранная вами область не находится в начале строки. Вы можете заменить его на \A, start of the matching string. Поскольку он будет соответствовать в каждой выбранной области, вы не сможете использовать \w, после этого вам нужно добавить +, чтобы не перевернуть каждый последующий символ слова в верхний регистр.

Использование

(?<=\A|(?<=[.!?]\s))(\w+) 

и заменить \u$0.

enter image description here

Альтернативный способ заключается в использовании захватив групп (то, вы будете в состоянии соответствовать случаям, когда количество пробелов между !, ? или . и следующим словом полукоксом более чем один):

(\A|[.!?]\s+)(\w+) 

для замены $1\u$2.