Иллюстрированный самоучитель по Adobe Dreamweaver MX

Использование регулярных выражений

Предположим, например, что нам необходимо найти все нужные адреса электронной почты и заменить у них окончание "com" на "ru". Для поиска в этом случае мы используем уже знакомое и работающее регулярное выражение:

"/b(.+@.+\.)com"

Постойте, но зачем мы взяли часть его в скобки? Ведь скобки используются для группировки, отделения части регулярного выражения от других частей. Здесь же ничего отделять не нужно – все и так работает.

А вот зачем.

Дело в том, что Dreamweaver, кроме всего прочего, помещает подстроку, совпадающую с заключенной в скобки частью регулярного выражения, в особую ячейку памяти, откуда ее можно потом будет извлечь. Таких ячеек памяти всего девять, и обращаться к их содержимому можно по номеру. В частности, извлечь содержимое первой ячейки в нашем случае можно так:

"$1"

Тогда заменить окончание почтового адреса можно с помощью такого регулярного выражения:

"$1ru"

Здесь все совсем просто. Мы берем первую подстроку и добавляем к ней окончание "ru". Наберите в окне документа несколько произвольных адресов электронной почты и проверьте наши выражения. Они работают.

Напоследок самое время привести полный список всех литералов регулярных выражений. Они перечислены в табл. 2.3.

Таблица 2.3. Литералы регулярных выражений.

Литерал Описание
^ Начало строки
$ Конец строки
* Предыдущий символ должен встретиться ноль, один или больше раз
+ Предыдущий символ должен встретиться один или больше раз
9 Предыдущий символ должен встретиться ноль или один раз
. Любой символ за исключением символа новой строки
х|у Должен встретиться символ х или символ у
{n} Предыдущий символ должен встретиться точно n раз
{m, n} Предыдущий символ должен встретиться от n до m раз
[abc] Должен встретиться один из символов, перечисленных в квадратных скобках. Можно задавать диапазоны символов, например [a-d] заменяет [abed]
[^аbс] Должен встретиться любой символ, кроме перечисленных в квадратных скобках. Можно задавать диапазоны символов
\b Граница слова (пробел или возврат каретки)
\B Не граница слова
\d Любая цифра. Эквивалентен [0-9]
Любой символ, кроме цифры. Эквивалентен [^0-9]
\f Прогон листа
\n Перевод строки
\r Возврат каретки
\s Любой пробельный символ (пробел, табуляция, прогон страницы или перевод строки)
\S Любой символ, кроме пробела
\t Табуляция
\w Любой алфавитно-цифровой символ или подчеркивание. Эквивалентен [a-zA-Z0-9_]
\W Любой символ, кроме алфавитно-цифрового и подчеркивания. Эквивалентен [^а-zА-z0-9 ]
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.