Содержание
В этой статье рассмотрим, какие бывают метасимволы в регулярных выражениях с примерами. Различают несколько групп метасимволов. Рассмотрим каждую подробно.
Простые метасимволы
- Экранирование \ — экранирование метасимволов и разделителей.
- Точка . — любой символ, кроме символа перевода строки. Пример:
preg_match('/./', 'PHP 5', $matches); $matches = [0];//получим Р
- Знак вопроса ? — либо ноль, либо одно совпадение.
preg_match('/PHP.?5/', 'PHP 5", $matches);//совпадут оба выражения
- Плюс + — одно или более совпадений.
/a+b/; // выдаст совпадение 'ab', "aab", 'aaaaaaab' preg_match('/а+b/', 'caaabc', $matches); $matches = [0]; //получим aaab
- Звездочка * — ноль или более совпадений.
/de*f/; // будут соответствовать строки 'df', 'def'', deeeef' и т.д.
Количественные метасимволы
- {m} {m,n} {,n} {m,} — указываем число совпадений.
/tre{1,2}f/; //выдаст 'tref', 'treef', но не 'treeef' /fo{2,}ba{,2}r; //'foobar', 'fooooooobar', но не 'foobaaar'
- ^ — стоит в начале строки, означает начало строки, т.е. до нее ничего нет.
/^ghi/; //'ghik', 'ghi', но не 'fghi'
- $ — стоит в конце строки, означает, что строка закончена, после ничего нет.
/John$/ //"Mike, John" и "Mike, John\n", но не "John Smith"
- […] — класс искомых символов, задаем символы, которые нам нужны.
preg_match('/[0-9]+/', 'PHP is released in 2005',$matches); $matches = [0]; // 2005 preg_match('/[^0-9]+/', 'PHP is released in 2005',$matches); $matches = [0] // PHP is released in
Здесь, если галочка ^ стоит внутри класса искомых символов, она означает отрицание.
Метасимволы группировки
- (…) — группировка элементов.
'PHP in 2005'//есть некоторая строка preg_match('/([12][0-9])([0-9]{2})/','PHP in 2005",$matches); $matches = [0] => 2005, [1] => 20, [2] => 05 //в первую ячейку упадет вся строка //во вторую ячейку - 20 //в третью ячейку - 05
- (?:…) — участок, который не должен попадать на выход регулярного выражения.
preg_match('/([A-Za-z ]+)(?:ith)/', 'John Smith',$matches); $matches = [0] => John Smith, [1] => John Sm //первая ячейка - строка полностью //вторая ячейка - без ith
- (?P’имя’…) — определяем именованный вложенный шаблон, когда выражение большое, чтобы не запутаться.
preg_match('/(?P<century>[12][0-9])(?P<year>[0-9]{2})/', 'PHP in 2005",$matches); $matches = [0] => 2005, [century] => 20, [1] => 20, [year] => 05, [2] => 05 //по имени шаблона образовали именованные ячейки
Примеры
- Есть строка — ’00:04:23:7с:5d:01′.
/^([0-9a-f][0-9a-f]<img src="http://phpmove.ru/uploads/smiles/smile.gif" width="19" height="19" alt="smile" style="border:0;" class="smiley">{5}[0-9a-f][0-9a-f]$/; /^([0-9a-f]{2}<img src="http://phpmove.ru/uploads/smiles/smile.gif" width="19" height="19" alt="smile" style="border:0;" class="smiley">{5}[0-9a-f]{2}$/; $matches = [0] => 00:04:23:7с:5d:01, [1] => 5d
- Есть строка ‘John Smith ‘jsmith@site.com’.
/([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9_-]+)>/; $matches = [0] => John Smith <jsmith@site.com>, [1] => John Smith,//получим имя [2] => jsmith@site.com, //получили email [3] => site //получили доменное имя
Понимание базовых основ поможет в будущем легко создавать довольно сложные регулярные выражения. Ну и практика, куда же без нее.
Поделиться новостью в соцсетях
Метки: метасимволы, регулярные выражения
-
Функции эмуляции SSI
-
Оператор output
-
Модификаторы
Похожие записи