2014-12-18 2 views
0

С * и + жадностью ведет себя по-другому в шаблонах регулярных выражений ниже, почему?Почему жадный плюс ведет себя иначе, чем звезда?

Это мой текст:

hello abcdef ghijklmc happiness<span>Lorem impsum</span> lorem <p>Lorem impsum</p>Lorem impsum Today is Feb 23rd, 2003

Это регулярное выражение:

<[/]?[a-z].*?>

Результат:

enter image description here

С помощью этой схеме:

<[/]?[a-z].+?>

Результат:

enter image description here

+1

Пожалуйста [за любовь бога] (http://stackoverflow.com/a/1732454/1348195) не разобрать HTML с регулярными выражениями. Это даст вам мир боли, и DOM уже содержит _extremely_ мощные методы для работы с HTML напрямую. –

+3

'+?' И '*?' Не жадные кванторы, а наоборот - они «ленивы» или «неохотно». – Kobi

ответ

5

Поскольку * является 0 или более и + является 1 или более.

Если имя тега имеет только один символ в нем:

  1. [a-z] соответствует p
  2. . соответствует >
    • Если у вас есть +> должен быть согласован по . к нему сохраняются совпадения до следующего > (в конце следующего тега)
    • Если у вас есть *, > не подлежит согласованию с . (так как у вас может быть 0 совпадений), поэтому > соответствует этому символу.
  3. > соответствует следующий >

 Смежные вопросы

  • Нет связанных вопросов^_^