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,}? |
Последние комментарии