16 марта, 2011

regular expression

Памятка по регулярным выражениям

^ — начало строки;

$ — конец строки;

Символьные классы (наборы символов)

\s — пробел или табуляция;

\S — инверсия '\s' — видимые символы;

\w — [a-zA-Z_] — то, что обычно входит в состав слова;

\W — инверсия '\w', аналог: [^a-zA-Z_]

\d — цифры, аналог: [0-9]

\D — инверсия '\d' — [^0-9]

\b — граница слова

Примеры:

[-,14a-sv] — символьный класс: минус, запятая, один, четыре, латинские буквы от a до s, буква в

[^abc] — все символы кроме букв латинского алфавита a, b, c

^[^abc] — начало строки, все символы кроме букв латинского алфавита a, b, c

\w+$ — последнее слово

Квантификаторы (указание количества повторений)

{n} — повторяется ровно n раз

{,m} — повторяется не больше m раз

{0,} — сколько угодно, может и небыть, аналог: *

{0,1} — одно, может и небыть, аналог: ?

{1,} — сколько угодно, минимум одно, аналог: +

{#,#} — сколько минимум, сколько максимум

Жадные, ленивые и ревнивые квантификаторы

В некоторых реализациях едице совпадения соответствует максимально длинная строка, например, <td>.*</td> в строке <td>1</td><td>2</td><td>3</td> найдет 1</td><td>2</td><td>3, такой поиск можно назвать жадным

Чтобы этого избежать, можно:

  • указать символы не входящие в желаемый результат: <td>[^<]*</td>
  • сделать квантификатор нежадным, добавив знак вопроса «?»: <td>.*?</td>. Для других случаев: +?, {n,}?

Ревнивые квантификаторы (сверхжадные) ищут максимально длинный вариант и запрещают искать в «найденных» частях, что увеличивает скорость поиска: *+, ?+, ++, {n,}+

Группировка, просмотр вперед и назад

| — или

(?:abc) — группировка — скобки без запоминания

a(?=b) — 'a' после которого есть 'b'

a(?!b) — 'a' после которого нет 'b'

(?<=b)a — 'a' перед которым есть 'b'

(?<!b)a — 'a' после которого нет 'b'

Поиск по условию

Обязательно добавлю, когда испробую =)


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

2010–2019 Блог Максима Златова, контакты

PHP execution time: 0.0059 s.
SQL execution time: 0.0011 s. (select publication with comments)

Яндекс.Метрика