По умолчанию .*
является greedy, что означает, что оно соответствует максимально возможному. Так с .*
замена изменится:
This <b>is</b> an <i>example</i>.
^-------------------------^
в
This .
Если использовать вопросительный знак после кванторной это делает нежадным, так, чтобы он соответствовал как можно меньше. С .*?
замены работает следующим образом:
This <b>is</b> an <i>example</i>.
^-^ ^--^ ^-^ ^--^
становится:
This is an example.
Это отличается от более общего пользования ?
как квантор, где оно означает «матч ноль или один».
В любом случае, если ваш текст HTML, вы должны использовать парсер HTML вместо регулярных выражений.
Обратите внимание, что атрибуты HTML могут содержать простые символы '>'. Ваше регулярное выражение не учитывает это. – Gumbo
Я следовал за учебником, который (как вы указываете) использует простой подход к проблеме.Меня больше интересовал способ *? работает. –
См. Также http://stackoverflow.com/questions/3075130/difference-between-and-for-regex/3075532#3075532 - Я подробно рассмотрел это с помощью иллюстративных примеров. – polygenelubricants