
GREEDY AND LAZY IN REGEXP
Квантификация — поиск последовательностей;
Определяет, сколько раз предшествующее выражение может встречаться.
Квантификатор может относиться более чем к одному символу в регулярном выражении, только если это символьный класс или группа.
Таблица 2: Квантификаторы и операторы повтора
| Квантификатор | Описание | Пример |
| * | Встречается 0 и более раз | REGEXP_REPLACE(str, ’11*’, ‘1’) Результат: test11 => test1 11123345 => 123345 |
| ? | Встречается 0 или 1 раз | |
| + | Встречается 1 и более раз | REGEXP_LIKE(str,’5+’) Результат: test11 => false 11123345 => true |
| {m} | Встречается ровно m раз | REGEXP_LIKE(str,’3{2}’) Результат: test11 => false 11123345 => true |
| {m,} | Встречается по крайней мере m раз | |
| {m, n} | Встречается по крайней мере m раз, но не более n раз |
Жадная квантификация — это стремление захватить максимально длинную строку, которая соответствует шаблону.
SQL> with t as ( 2 select '<div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>' str from dual 3 ) 4 select regexp_substr(str,'<.*>') as res from t; RES -------------------------------------------------------------- <div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>
Ленивая квантификация — это стремление захватить максимально короткую строку, которая соответствует шаблону. Поддерживается с версии 10gR2.
SQL> with t as ( 2 select '<div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>' str from dual 3 ) 4 select regexp_substr(str,'<.*?>') as res from t; RES ----- <div>

| Жадный | Ленивый |
| * | *? |
| + | +? |
| {n,} | {n,}? |

Последние комментарии