Регулярное выражение захватывает слишком много текста

127
03 февраля 2021, 15:30

Есть HTML

<table>
....
<!--ID 25--></table>
<table>
....
<!--ID 26--></table>

Регулярка

<table>(.*)<!--ID [0-9]{0,4}--></table>

возвращает полностью код, содержащий 2 таблицы сразу.
Как запросить, чтобы регулярка вернула каждую таблицу по отдельности?

Answer 1

Надо уменьшить жадность квантификатора, то есть заменить * ("жадная" версия) *? ("ленивой" версией). Вот так:

<table>(.*?)<!--ID [0-9]{0,4}--><\/table>
         ^^

Или (если библиотека регулярных выражений не поддерживает модификатор DOTALL)

<table>([\s\S]*?)<!--ID [0-9]{0,4}--><\/table>
        ^^^^^^^^

Посмотреть пример работы

READ ALSO
UPDATE и SELECT помогите объединить

UPDATE и SELECT помогите объединить

Помогите пожалуйста объединить запросы

200
php zip архивация папок

php zip архивация папок

подскажите, как записывать файлы в архив? сейчас создает архив с пустыми папкам

103
Не работает PHP (Работа с картинками,сжатие)

Не работает PHP (Работа с картинками,сжатие)

Всем привет! У меня есть такой вот клас для сжатия картинки:

101
Выбор сервера для web-проекта (20 тыщ посетителей) [закрыт]

Выбор сервера для web-проекта (20 тыщ посетителей) [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

116