Программист Дроздовский Михаил
Карта сайта | Форум  

DROZD. / Разное / Статьи

Статьи и заметки обо всем, что имеет какое-либо отношение к созданию сайтов.
Информация о веб-дизайне, программировании, типографике и работе с контентом — все здесь.

  Опубликовано на journalist.artotron.com
   

 

 

Регулярные выражения. Часть 1

Автор: Дроздовский Михаил
 
Для многих программистов, не работавших прежде с Perl, данная область программирования неизвестна. Но все же многие из нас сталкиваются с ситуациями, когда регулярные выражения не только облегчают выполнение определенной задачи, но и когда они просто необходимы.

Взглянем на регулярные выражения по-привычному, из Perl.

1.Начнем. Допустим, есть какая-то строка, и нам нужно узнать, есть ли в ней подстрока SomeStr? Это делается очень простым шаблоном:

/SomeStr/

Применять этот шаблон на практике тоже очень просто - для работы с регулярными выражениями в Perl есть оператор =~ (и логически противоположный ему !~), который привязывает скалярное выражение, стоящее слева от него, к шаблону, стоящему справа. Пример:

...
if ($peremennaya =~ /SomeStr/) {
... }
...

Ну что же, теперь мы знаем, как работать с протейшими регулярными выражениями из Perl. теперь познакомимся поближе с самим языком регулярных выражений.

2.RegExp.
Допустим, нам нужно проверить строку на наличие в ней одной из нескольких возможных подстрок. В этом случае нужно просто использовать структурируюзий символ | (вертикальная черта) для разделения возможных вариантов подстрок:

$peremennaya =~ /SomeStr|ElseStr|ThirdStr/;

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

Еще один важный элемент языка регулярных выражений - это скобки. Скобки необходимы для логического группирования элементов регулярного выражения. Пример:

$peremennaya =~ /(Some|Else|Third)Str/;

Это регулярное выражение делает точно то же, что и представленное выше, но оно короче и понятнее. Так как есть неизменная во всех трех подстроках часть Str, то ее можно вынести за скобки, логически отделив от изменяемой части. Естесственно, что здесь символ | действует только внутри скобок.

А что, если нам нужно проверить строку на наличие определенных символов, например цифр? Как быть тогда. Не писать же для каждой цифры свое регулярное выражение? Конечно, нет! Можно просто использовать классы символов.
Класс символов - это набор символов, заключенных в квадратные скобки. Пример:

$peremennaya =~ /[1234567890]/;

Подобное регулярное выражение означает, что нахождение любго из этих символов сделает поиск успешным.

Наличие букв или цифр в определенной строке проверяется разработчиками приложений так часто, что в регулярных выражениях есть даже специальные классические классы символов, сделанные для удобства разработчиков. Вот они:
\d - цифра
\D - не цифра
\s - пробельный символ
\S - непробельный символ
\w - символ слова
\W - не символ слова

И последнее, что нужно запомнить, чтобы создавать простые регулярные выражения - это специальные символы (которые ведут себя в регулярных выражениях не так, как простые символы) и способ их отменять. Вот эти символы:

\ | ( ) [ ] { } ^ $ * + ?

Чтобы отменить действия специального символа (заставить машину регулярных выражений воспринимать его как обычный символ) - поставить перед ним \. А чтобы отменить действие самого \, надо просто его продублировать: \\


---
На этом первая часть статьи заканчивается. Ждите вторую.

 

 


Copyright © 2004 — 2010 Дроздовский Михаил коммерческая недвижимость Уралмаш в Екатеринбурге . доля уставного капитала филиала сбербанка