У меня есть партии записей, к которым я применяю стандартное форматирование. Каждый пакет имеет несколько записей заголовков, которые не следует трогать, за которыми следуют сотни пользовательских записей.
Одним из таких форматов является добавление точки после любого инициала или аббревиатуры, у которой ее нет, например, Smith, Dan F O'M или St Sebastian.
Мое регулярное выражение (на основе Perl) в Textpad начинается так:
(\<[[:upper:]]\>(?:'[[:upper:]])?)([", ])
который говорит найти слово из 1 символа, за которым может следовать апостроф и 1 символ, а затем заканчивается любой из кавычек, запятой или пробелом. (игнорируя другие сокращения для ясности). Замена вставляет точку-
$1.$2
Моя проблема заключается в том, чтобы исключить строки заголовков. Строки заголовков не начинаются с альфа-канала, в отличие от пользовательских строк. Моя мысль состоит в том, чтобы добавить спереди-
^[[:alpha:]].*?
Это работает, выбирая с начала записи, но затем мне нужно запустить замену всех несколько раз для такого количества сокращений, которое может разумно встречаться в записи (три, кажется, нормально).
Существует ли какая-либо конструкция Regex для размещения в пользовательских записях и выбора/замены только каждого небольшого элемента, чтобы курсор не перемещался за начало следующего инициала в той же записи?