Мне повезло с Notepad ++, решающим сложный поиск и замену большого количества похожего текста в примерно 8000 документов, но не этот конкретный:

В текстовом файле у меня будет много строк, которые говорят:

ABKNUMBER001=30422

и мне нужно изменить это на:

ABKNUMBER001=6543230422

Мне нужно найти и заменить, чтобы убедиться, что он заменяет только строку, если после '=' существует ТОЛЬКО 5 символов, начинающихся с 3

Например, эту строку ниже не нужно менять:

ABKNUMBER001=304221

На самом деле, мне действительно нужно найти все, что соответствует строкам ниже, где xxx может быть любыми цифрами 0-9, а yyyy также может быть любыми цифрами 0-9 (но ограничено только 4 цифрами), следующим образом:

ABKNUMBERxxx=3yyyy

В моем списке будут записи ABKNUMBER001, 002 ... 999 в каждом текстовом файле, и я хочу заменить любые из 999 записей в текстовом файле, которые соответствуют 3yyyy на 654323yyyy - имеет смысл?

2 ответа2

2

Notepad++ делает Perl регулярными выражениями. Это, в частности, операторы повторения:

ABKNUMBER[0-9]{3}=3[0-9]{4}$

Я заменил ваш xxx на [0-9]{3} чтобы запросить ровно 3 цифры, а yyyy на [0-9]{4} чтобы запросить ровно 4 цифры. Кроме того, я заканчиваю с $ чтобы соответствовать концу строки. Возможно, вы захотите вставить [ ]* перед $ , если вы не уверены, что в конце строк нет пустых мест.

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

1

Я хочу заменить любую из 999 записей в текстовом файле, которые соответствуют 3yyyy, на 654323yyyy.

  • Меню "Поиск"> "Заменить" (или Ctrl + H)

  • Установите "Найти что" на ^(ABKNUMBER[0-9][0-9][0-9]=)(3[0-9][0-9][0-9][0-9])$ или же

  • Установите "Найти что" на ^(ABKNUMBER[0-9]{3}=)(3[0-9]{4})$

  • Установите "Заменить на" на \1654\2

  • Включить "Регулярное выражение"

  • Нажмите "Заменить все"

До:

ABKNUMBER001=30422
ABKNUMBER002=40422
ABKNUMBER004=50422
ABKNUMBER005=60422
ABKNUMBER001=304221

После:

ABKNUMBER001=65430422
ABKNUMBER002=40422
ABKNUMBER004=50422
ABKNUMBER005=60422
ABKNUMBER001=304221

дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .