Нам поможет только регулярное выражение. А именно, такое:
\b.+0.+\.com
На первый взгляд, это бессмысленный набор символов, в котором с трудом угадывается нечто знакомое. Чтобы разобраться в нем, напишем таблицу, содержащую описание символов регулярных выражений поиска всех оканчивающихся на ".сот" почтовых адресов (табл. 22.1).
Таблица 22.1. Символы, используемые в регулярном выражении поиска почтовых адресов, оканчивающихся на “.сот"
Символы |
Описание |
\ь |
Начало слова |
Любой символ | |
+ |
Предыдущий символ обязательно должен встретиться один или более раз |
Знак "собака" | |
. + |
Опять любой символ, который обязательно должен встретиться один или более раз |
Таблица 22.1 (окончание)
Символы |
Описание |
\. |
Обычная точка. Ее предваряет обратная косая черта, так как точка - служебный символ (литерал) |
сот |
Окончание почтового адреса |
Теперь, когда нам все стало ясно, можно опробовать приведенное выше регулярное выражение. Выберем в раскрывающемся списке For панели Find and Replace пункт Text, введем наше регулярное выражение в область редактирования Text и не забудем включить флажок Regular expressions. Ура, работает!
Обобщим сведения, почерпнутые из приведенного примера.
В регулярных выражениях для обозначения различных фрагментов текста используются специальные символы - литералы. Если же нужно найти какой-либо символ, совпадающий с литералом, мы должны будем предварить его символом обратной косой черты (\). Например, чтобы найти точку, мы используем последовательность символов \..
С помощью регулярных выражений мы можем выполнять поиск самых разнообразных слов и словосочетаний. Например, регулярное выражение
(multi|hyper)media совпадает со словами "multimedia" и "hypermedia", но не совпадает со словом "media". Литерал "вертикальная черта" (|) задает поиск либо первой, либо второй подстроки (в нашем случае - либо "multi", либо "hyper"), а скобки здесь использованы для того, чтобы отделить друг от друга две части выражения. Если бы мы их не поставили, получилось бы выражение multi | hypermedia, совпадающее со словами "multi" и "hypermedia", а нам это не нужно.
А вот в выражении
[\.!\?]$
в квадратных скобках перечислены символы, один из которых должен встретиться в тексте. Это следующие символы: точка (предварена символом \, так как является литералом), восклицательный знак и вопросительный знак (предварен обратной косой чертой, так как он тоже литерал). Последний литерал - символ $ - обозначает конец строки. В результате мы получим регулярное выражение, которое ищет один из перечисленных знаков препинания, стоящий в конце строки.
Мы убедились, что при поиске подстрок регулярные выражения очень помогают. Но помогут ли они при замене подстрок? Разумеется!
Предположим, что нам нужно найти адреса электронной почты и в порыве патриотизма заменить в них окончание "сот" на "ru". Для поиска в этом случае мы используем уже знакомое и работающее регулярное выражение
/Ь(.+0.+\.)сот
Стоп! Зачем мы взяли часть выражения в скобки? Ведь скобки используются для группировки, т. е. для отделения одной части регулярного выражения от других его частей. Здесь же ничего отделять не нужно - все и так работает.