Notepad++/Регулярное выражение для поиска строки с одинаковым началом, разным окончанием

Notepad++/Регулярное выражение для поиска строки с одинаковым началом, разным окончанием

Итак, я немного почитал и обнаружил, что NotePad++ не использует «нормальные» регулярные выражения (начинаю думать, что мне просто придется вернуться к SciTE), но вот мой вопрос:

У меня есть экспортированный список данных с некоторыми избыточными данными, которые я пытаюсь очистить и преобразовать в хороший CSV-файл для импорта в адресные книги (мигрирую решение для факс-сервера, старый уже устарел, поэтому это лучшее, что я могу получить для экспорта).

Строка, которую я пытаюсь удалить из каждой группы записей, всегда начинается

Запись: ИМЯ ~

А затем следует 12-значный буквенно-цифровой (кажется, шестнадцатеричный) код, который уникален для каждой группы записей. Для нескольких групп записей есть понятная человеку запись после "NAME", но их достаточно мало, и я могу удалить их вручную, поэтому сопоставление их не составит большого труда.

Итак, я хочу найти каждую строку, которая начинается с Entry: и выделить ее до конца строки. Каждая запись в каждой группе находится на отдельной строке. Затем я использую Find & Replace, чтобы удалить эти строки из списка.

ОБНОВЛЕНИЕ: Вход и выход

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234

Вот две группы записей. Я хочу удалить строки, начинающиеся с "Entry:" из каждой группы.

решение1

Другим вариантом было бы

^Entry: NAME .*

Который будет искать строки, начинающиеся с Entry: NAMEи все, что после этого.

решение2

С использованием

^Entry: NAME ~\d+$

поскольку шаблон поиска, похоже, работает так, как и требовалось.

Я бы лично рекомендовал сопоставление с использованием \dзаполнителя (который соответствует любой одиночной цифре в диапазоне от 0до 9) вместо более общего .заполнителя. На самом деле, вы даже должны сделать это:

^Entry: NAME ~\d{12}$

указать, что вы ожидаететочно12 цифр подряд. Таким образом, если запись может содержать что-то, чего вы не ожидали, вы не замените это случайно.

Если строка представлена ​​в шестнадцатеричной системе счисления, можно использовать:

^Entry: NAME ~[0-9a-fA-F]{12}$

Обратите внимание, что я не проверял, правильно ли работают последние два примера в Notepad++, но, насколько мне известно, это довольно простой синтаксис.

Связанный контент