Как и было обещано, сейчас мы познакомимся с регулярными выражениями. Чем же они могут нам помочь?
Представим себе такую ситуацию. Вам нужно найти в исходном HTML-коде страницы интернет-адрес, причем любой. Как вы это сделаете? Правильно, введете в поле Search For окна поиска и замены (см. рис. 2.27) символы www. И найдете... кое-что. Но не все. Ведь интернет-адреса совсем не обязательно начинаются на "www". Что в этом случае искать? Точку? Но точек в тексте и так хватает, и далеко не всякая из них является частью интернет-адреса.
В этом случае нам на помощь придет регулярное выражение. Оно будет иметь следующий вид:
"http://.+\..{2,3}"
Ну и как оно вам? Больше похоже на бессмысленный набор символов, в котором с трудом угадывается что-то знакомое. Признаться, автор и сам сначала с трудом в них разбирался. Ему помогала вот такая табличка — см. табл. 2.1.
Таблица 2.1. Регулярное выражение поиска интернет-адресов
Символы |
Описание | ||||
"http:// |
Первая кавычка и начало интернет-адреса | ||||
. |
Точка обозначает любой символ | ||||
+ |
Плюс обозначает, что предыдущий символ должен повториться минимум один раз | ||||
\. |
Обычная точка. Ее предваряет обратная косая черта, т. к. точка — служебный символ | ||||
. |
Опять любой символ | ||||
{2,3} |
Предыдущий символ должен повторяться от двух до трех раз | ||||
" |
Закрывающая кавычка | ||||
Вы можете попробовать это регулярное выражение в действии. Только не забудьте выбрать в раскрывающемся списке Search For пункт Source Code.
Как видите, в регулярных выражениях используются специальные символы — литералы. С их-то помощью и задаются условия поиска тех или иных символов. Если вы хотите найти какой-либо символ, совпадающий с литералом, вы должны будете предварить его обратной косой чертой. Например, чтобы найти точку, вы должны использовать такую последовательность символов: "\."
С помощью регулярных выражений вы можете выполнять поиск самых разных слов и словосочетаний. Например, регулярное выражение совпадает со словами "multimedia" и "hypermedia", но не совпадает со словом "media". Литерал | задает поиск либо первой, либо второй подстроки (в нашем случае либо "multi", либо "hyper"), а скобки здесь использованы для того, чтобы отделить друг от друга две части выражения. Если бы мы их не поставили, получилось бы выражение
Символы |
Описание |
||
[\.!\?] $ |
Один из возможных символов: точка, восклицательный и вопросительный знаки. Заметьте, что вопросительный знак предварен обратной косой чертой, т. к. иначе Dreamweaver воспринял бы его как литерал Этот литерал обозначает конец строки |
||
Литерал |
Описание |
||
^ |
Начало строки |
||
$ |
Конец строки |
||
* |
Предыдущий символ должен встретиться ноль, один или больше раз |
||
+ |
Предыдущий символ должен встретиться один или больше раз |
||
9 |
Предыдущий символ должен встретиться ноль или один раз |
||
. |
Любой символ за исключением символа новой строки |
||
х|у |
Должен встретиться символ х или символ у |
||
{n} |
Предыдущий символ должен встретиться точно n раз |
||
{m, 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 ] |
||