Ответ 1
По умолчанию метасимвол .
не соответствует символам новой строки. Должна быть опция "Однострочная" или "DOTALL" или аналогичная, которая позволяет точкам соответствовать каждому символу. Или вы можете добавить (?s)
в начало регулярного выражения и получить тот же эффект только для этого регулярного выражения.
Но было бы лучше заменить .*
на [^<>]*
. В режиме DOTALL .*
будет пытаться сожрать весь остальной документ, что приведет к медленной производительности и/или неправильным совпадениям, но [^<>]*
никогда не будет пытаться соответствовать за пределами тега.
Кстати, если вы используете ['|"]
для соответствия одной кавычки или двойной кавычки, избавьтесь от |
. "ИЛИ" подразумевается в символьном классе, поэтому вам нужно только ['"]
(|
будет просто соответствовать литералу |
).