Регулярные выражения

Если необходимо найти схожие фрагменты во многих местах в разных файлах, то...

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

Сразу примеры:

if (preg_match("/\bweb\b/i""My website the best.")) {
    echo 
"Вхождение найдено.";
} else {
    echo 
"Вхождение не найдено.";
}

тут регулярное выражение "/\bweb\b/i" - означает \b - начало и конец выражения, i - не учитывать регистр и найти требуется слово "web" и в этом случае вхождение не будет найдено, так как обозначен конец и начало, если их убрать, то совпадение найдется.

 

.  точка означает любой символ, кроме \n и \r

 

Простые примеры регулярок

[0-9]{5} - только 5 цифр от 0 до 9

[0-9]{4,8} - только от 4 до восьми цифр от 0 до 9

 Квантификатор - это количество повторений в регулярных выражениях:

{5} - 5 раз может быть что-то

*   - от нуля до бесконечности, или же {0,}

+  плюс означает от 1 до бесконечности, или же {1,}

?  означает или ноль или 1 раз, то есть что-то может либо быть, либо его может не быть, например "/?" - в url либо будет, либо нет...или же , или же {0,1}

 

Нужно отметить, что функции типа preg_replace или ereg_replace всегда нужно применять в редких случаях и, по возможности, заменять на str_replace, так как идет интерпретация строки и значительное потребление ресурсов. К примеру, выражение типа (.*) - означает перебрать все символы, а это очень много, если перебирать большие тексты и тд, на этом начинающие php-программисты могут споткнуться.

/d - или же - [0-9] - означает любое из цифр от 0 до 9 

если поставить знак "крышечка", то будет наоборот: 

/D - или же - [^0-9] - означает все КРОМЕ цифр.

 

/w - или же - [a-z0-9] - все цифры и буквы

если поставить знак "крышечка", то будет наоборот: 

/W - или же - [^0-9] - означает все КРОМЕ цифр и букв.

 

/s - или же - [] - символы: пробел, табуляция, перевод строки

если поставить знак "крышечка", то будет наоборот: 

/S - или же - [^0-9] - означает все КРОМЕ пробелов, табуляции, переводов строки.

 

| - вертикальная черта означает "или", то есть или одно или другое.

 

Начало и конец строки

^ - начало строки

$ - конец строки

 

Шаблоны, модификаторы и утверждения

$exp = /bmk/i

/<выражение>/ - шаблон заключенный в слэши, можно также использовать #@~, допустим, если разбирается url , то там есть слэши и лучше в этом случае использовать другой символ для удобства. Можно и другие символы, кроме пробела, обратного слэша и цифр.

а после стоит модификатор i - означающий, что буквы могут быть любого регистра.

 

Модификаторы

i - регистронезависимый (Ignore Case, case insensitive)
U - нежадный поиск (Make search ungreedy)
s - включая перевод строки (Includes New line) - то есть может быть рассмотрено несколько строк, а не одна
m - мультистрока (Multiple lines) - то есть разрывы строк с помощью точки в PHP
x - Extended for comments and whitespace - в данном случае можно разбить регулярку на несколько строк и сопровождать комментариями и это будет понято
e - Enables evaluation of replacement as PHP code. (preg_replace only)
S - Extra analysis of pattern

Модификаторы можно комбинировать, например - imx - это регистронезависимый мультистрочный с комментариями паттерн.

Утверждения (Assertions)

b - граница слова (Word Boundry)
B - НЕ граница слова (Not a word boundary)
A - начало шаблона (Start of subject)

z - конец шаблона (End of subject)
Z - конец шаблона или разрыв строки (End of subject or newline at end)
G - первая совпавшая позиция в шаблоне (First matching position in subject)

 

Более сложные примеры регулярок на PHP

/[^b]/  - любой символ кроме "b"

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Создание сайта PHP Регулярные выражения