Как найти и заменить в Notepad++ несколько разных символов на соответствующие буквы сразу по всему тексту? Например, у меня есть 32 символа, которые я хочу заменить. Итак, у меня есть такой символ, как «А», и я хочу заменить его буквой «А». Далее у меня есть символ, такой как «Æ», и я хочу заменить его на букву «Ж» и так далее. Обычно у меня 32 таких персонажа, и каждый раз мне нужно выполнять одну и ту же операцию. Есть ли способ сделать это сразу?
3 ответа
Иногда я использовал wReplace от sharktime.com. Это работает довольно хорошо. Вы устанавливаете его и затем можете указать столько символов, сколько хотите изменить.
Я знаю, что это не решение в стиле плагинов , но оно работает. Надеюсь это поможет!
Даже с новым движком RegEx в Notepad++ 6, который поддерживает PCRE (исходный код), нет здравого (т. Е. С линейной сложностью) и надежного (т. Е. Гарантированно работающего) подхода, который позволит вам добиться этого в одном Find & Replace, не говоря уже о один Поиск в файлах.
Вы можете, однако, добиться этого с помощью поиска в файлах дважды:
Добавьте матрицу подстановки к каждому вхождению любого из старых символов:
Find what: ([ÌÍÎÏÐÑ]) Replace with: ``\1`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT`` Search Mode: Regular Expression
Это превращает, например, foo
fooÌbar
вfoo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar
.Замените каждый старый символ (и матрицу подстановки) соответствующим новым символом:
Find what: ``(.).*?`\1(.).*?`` Replace with: \2 Search Mode: Regular Expression
Это, например, преобразует
foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar
вH
Обратите внимание, что для этого вам нужно перейти на Notepad++ 6.0 или выше . В то время как само регулярное выражение также должно работать со старым движком RegEx, в общем есть ошибка, которая путает многобайтовые символы.
Как это устроено
Набор символов
([ÌÍÎÏÐÑ])
соответствует любому из этих пяти символов.Скобки превращают это в первое подвыражение (см. Следующий пункт).
\1
символизирует совпадение первого подвыражения, то есть символа, который мы хотим заменить.Все остальные персонажи трактуются буквально.
Выбор
`
в качестве разделителя является произвольным. Вы можете использовать любой другой символ, который вы хотите.
(.)
соответствует первому символу после``
.Скобки превращают это в первое подвыражение.
.*?
соответствует как можно меньшему числу символов.`\1
`
следует матч первого подвыражения, то есть символ , который мы хотим заменить.(.)
соответствует первому символу после символа, который мы хотим заменить. По нашему замыслу, это его символ замены.Скобки превращают это во второе подвыражение.
.*?``
соответствует как можно меньшему числу символов, пока не встретится последний``
.
Для получения дополнительной информации о регулярных выражениях, обратитесь к: