Жадібні і ледачі квантіфікатори в регулярних виразах
Відео: PHP РОБОТА формальному виразу. Жадібність квантіфікаторов і межа слова
Я колись писав про квантіфікатор повторень. Так ось, ми з Вами там розглянули тільки "жадібних"Представників. Однак, не завжди їх"жадібність"Нам допомагає, дуже часто вона і шкодить. Трохи нижче я покажу приклад, де чітко видно те, що вони іноді роблять, а також покажу як зменшити їх запал і зробити квантіфікатори повторень "ледачими".
Давайте розберемо простий і вже став класичним приклад:
Відео: Жадібні і Ледачі регулярні вирази
lt ;?php
$ str ="Невелика рядок c жирним виділенням. "-
$ result_str = preg_replace("/.* Lt; / bgt; / i ","Здесь_жірное_виделеніе", $ str) -
echo $ result_str-
?gt;
Можливо, Ви очікуєте щось на зразок цього: "Невелика здесь_жірное_виделеніе з здесь_жірное_виделеніе виділенням". Тобто просто заміна вмісту всередині тега lt;bgt; на задану нами рядок разом з самим тегом. Однак, це не зовсім так, оскільки тут вступає в гру "жадібність квантіфікаторов". І в результаті заміна була не всередині кожного тега lt;bgt ;, а від самого першого відкриваючого тега до самого останнього закриває. В цьому і полягає жадібність.
Відео: 08 Жадібні і ледачі квантіфікатори
Ось як треба писати даний код, щоб заміна відбувалася так, як ми хочемо:
lt ;?php
$ str ="Невелика рядок c жирним виділенням. "-
$ result_str = preg_replace("/.*? Lt; / bgt; / i ","Здесь_жірное_виделеніе", $ str) -
echo $ result_str-
?gt;
Все, що ми змінили це регулярний вираз, поставивши після квантіфікатора повторень ".*"Знак питання, який саме і робить квантіфікатор "ледачим". Тепер результатом буде: "Невелика здесь_жірное_виделеніе c здесь_жірное_виделеніе виділенням.", Чого ми і намагалися домогтися.
Відео: Крива Безьє по трьох точках, розрахувати за формулою або намалювати самому
Я дуже сподіваюся, що Ви усвідомили проблему "Жадібності" квантіфікаторов і зрозуміли, як вони працюють. А також усвідомили, як це можна виправити простим знаком "?". Ця тема дійсно важлива, і величезна кількість новачків в регулярних виразах роблять одні й ті ж помилки, пов`язані з "Жадібністю" квантіфікаторов повторень, тому якщо Ви ще не усвідомили весь сенс до кінця, то перечитайте статтю ще раз.
- Windows 8: бути? Чи не бути? ..
- Як працювати з api вконтакте
- Як правильно використовувати теги div, section і article.
- Строкові функції в php
- Функції для роботи з регулярними виразами в php
- Створення функцій в php
- Константи в php
- Функція sscanf в php
- Приклади регулярних виразів
- Перевірка включений чи jаvascript
- Регулярні вирази
- Спецсимволи в регулярних виразів
- Квантіфікатори в регулярних виразів
- Глобальні змінні в php
- Російська мова та регулярні вирази в php
- Модифікатори в регулярних виразах
- Мета-теги для пошукових систем в html
- Парсинг xml-документа на php
- Метасимволи в регулярних виразів
- Сверхжадние або ревниві квантіфікатори в регулярних виразах
- Екранування регулярного виразу в php