Примеры регулярных выражений
Вот мы и подходим к концу изучения регулярных выражений. Если Вы читали предыдущие статьи, то уже должны иметь представление о регулярных выражениях, об их назначении и о том, где и как они используются. Однако, считаю необходимым продемонстрировать реальные примеры регулярных выражений. Цель данной статьи: показать, как они составляются, чтобы Вы могли самостоятельно составлять регулярные выражения для своих нужд.
В таблице ниже представлены регулярные выражение, а также написано то, что они делают. Вы должны уметь читать данные регулярные выражению, подобно тому, как мы с Вами это делали в предыдущих статьях. Советую Вам перевести на русский язык каждое регулярное выражение:
Пример | Что делает |
/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})/i | Возникнет соответствие, если в строке будет указан e-mail адрес. |
/[1-2]?[0-5]?[0-5]\.[1-2]?[0-5]?[0-5]\.[1-2]?[0-5]?[0-5]\.[1-2]?[0-5]?[0-5]/ | Возникет соответствие, если в строке будет найден IP-адрес. |
/(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?/ | Возникет соответствие, если в строке будет найден URL. |
/<([a-z]+)([^>]+)*(?:>(.*)<\/\1>|\s+\/>)/ | Возникет соответствие, если в строке будет найден HTML(XML)-тег. |
Это самые популярные примеры регулярных выражений. Вы должны уметь эти выражения читать, и если Вы этому научитесь, то составлять Вам будет подобное уже гораздо легче. Знаний, которые Вы получили в прошлых статьях, должно хватить для того, чтобы прочитать каждое из представленных регулярных выражений.
Поэтому советую Вам поступить так: переведите каждое регулярное выражение на русский язык, а затем придумайте регулярное выражение для поиска даты. Например, дата может выглядеть так: "22.12.01" или так "2001-12-01", или даже так "03-12-2001". Составьте одно регулярное выражение, которое будет находить соответствие для всех трёх случаев. И проверьте данное регулярное выражение с помощью PHP (функции для работы с регулярными выражениями в PHP).
Желаю Вам Успехов и Удачи!
-
- Михаил Русаков
Комментарии (7):
Или я что-то не понимаю, или пример IP адреса неправильный: 192.168.1.1 он не возьмет. Так, наверное, правильней: /(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.){3}(2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[0-9])/
Ответить
и тег типа <h1></h1> выприведенная конструкция не найдет. Вот чуть более гибкая регулярка /<([a-z][a-z0-9]*)[^>]*>.*<\/\1>/
Ответить
я вот так убираю тэги /\<((\S|\s)[^\>]+)\>/
Ответить
А зачем конcтрукция (\S|\s) ? По смыслу она означает любой непробельный либо любой пробельный символ. Думаю, это эквивалентно конструкции (.) , т.е. один любой символ. И вообще непонятно, зачем этот карман (\S|\s) в данном регулярном выражении. Не вижу в нём никакого смысла.
Ответить
Есть программка RegexBuddy для построения регулярных выражений, с множеством готовых шаблонов.
Ответить
Михаил, здравствуйте! У вас текстовая ошибка на этой странице: Вы должны уметь читать данные регулярные выражению, подобно... Надо так: Вы должны уметь читать данные регулярные выражения, подобно... С уважением, Сергей.
Ответить
Неправильно регулярное выражение для URL в части для номера порта, т.е. (:(0-9)*)* Надо: (\:[0-9]*)* Почему-то автор не везде перед спецсимволами (точка, двоеточие) ставит экранирующий символ "\". Даже, если он, возможно, в некоторых случаях не обязателен, то лучше его поставить для улучшения читаемости выражения. Также непонятно, зачем заключать в круглые скобки один символ, например (s?) или (\/?) Разве, что для создания кармана и сохранения этого символа в элементе массива или свойстве объекта.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.