Что понадобится: NotePad++. Владельцы Mac-ов используют аналоги: редакторы TextWrangler (BBedit) или Fraise. Все дальнейшие примеры иллюстрируют использование NotePad++.
Типы кодировок текста для русского языка:
- DOS, KOI8-R, Cyrillic Windows cp1251, Unicode (UTF-8 с/без BOM, цифровой подписи)
В меню "Кодировки" можно заменить текущую на Windows-1251, затем обратно на UTF-8 без BOM.
Если в открываемом файле видны "кракозябры", то с помощью меню "Кодировки" можно подобрать правильную.
"Преобразовать в...": переводит файл в другую кодировку (затем файл нужно сохранить). Windows-1251 называется ANSI.
- Меню: Вид → Отображение символов
- далее чекбоксы: Отображать пробелы и табуляции, отображать символы конца строки, отображать все символы.
Непечатаемые символы, обозначающие конец строки:
Win-формат: CR+LF \r\n
old-Mac-формат: CR \r
UNIX-формат: LF \n
В режиме отображения символов конца строки вы увидите "СR", "LF", которые при поиске и замене в расширенном режиме и в режиме регулярных выражений задаются как эскейп-символы \r
, \n
, соответственно.
- Меню: Вид → Перенос строк
автоматически переносит текст на новую строку, как в Word. Видимые концы строк при этом не сохраняются (являются "мягкими").
Табуляция: экскейп-символ \t
Пример: Заменим 5 пробелов в начале строки на знак табуляции.
Найти: ˽˽˽˽˽
(5 пробелов)
Заменить: \t
Режим поиска: расширенный
Пример: Заменим концы строк на пробел
Найти: \r\n
Заменить: ˽
(1 пробел). Режим поиска: расширенный
^
- начало строки, $
- конец строки
к[аоиу]т
- найдет кат, кот, кит, кут
[а-яё]
- найдет все буквы русского алфавита
[0-9a-z@_.]
- все знаки, допустимые в адресе электронной почты
Пример: Узнаем, есть ли в тексте латинские буквы...
[^а-я]
- "крышка" обозначает НЕ (в данном случае, ищем любой символ кроме букв русского алфавита от а до я)
[^!]$
- найдет концы абзацев, не заканчивающиеся на восклицательный знак
.
- любой символ
.+
- повтор (любого символа) 1 или более раз
.*
- повтор (любого символа) 0 или более раз
е+
- найдет е, ее, еее...
[нм]+
- найдет сочетания нн, мм, нм, мн, ммм, нннн, мнннннм...
л.+
- найдет букву л и далее все символы до конца строки
л[а-яё]+
- что найдется здесь?
˽я[а-яё]*
- (в начале пробел) найдет слова, начинающиеся с я, в том числе слово я
Этот поиск "жадный" - он будет искать строку максимальной длины, соответствующую условию в "Искать".
Запрос <.*>
в строке <p>что-то здесь</p>
найдет всю строку целиком: <p>что-то здесь</p>
Нежадный ("ленивый") поиск:
.+?
.*?
-- ищет до первого вхождения символа, указанного после ?
<.*?>
- найдет тег <p>
, затем тег <p>
: <p>что-то здесь</p>
ч.+о
- найдет "что-то"
ч.+?о
- найдет "что"
Примеры: Найдем "лишние" пробелы в тексте и удалим их.
Найдем с помощью "ленивого поиска" последовательность букв от пробела до пробела (слово).
\.
- ищет точку
\\
- ищет обратный слэш
\+
, \*
, \[
, \]
, \(
- ищет плюс, звездочку, знаки скобок и т.п.
Пример: Найдем все концы абзацев, заканчивающиеся на точку.
Заключим все условие или его части в скобки. В поле "Заменить"
\1
, \2
, \3
- обозначает части поиска
([^ -])- ([^ -])
→ \1\2
- уберет дефисы, оставшиеся после удаления жестких концов строк.
Пример: Как задать маску поиска конца прямой речи?
Предупреждение: язык регулярных выражений может немного различаться в разных редакторах и в разных языках программирования (нотацией), но в целом набор приемов и принципы поиска одинаковы.
Так, в NotePad++ версий ранее 6.0 нет: {20,40}
(повтор от 20 до 40 раз),
вместо \0
(все найденное по маске поиска) использовать $0
.