Анализ HTML с помощью регулярных выражений очень сложен, и любые простые решения могут легко сломаться.(Используйте правильный инструмент для работы.) При этом я покажу простое решение.
Сначала я упростил регулярное выражение, которое вы должны были:
(?<=\s)\s+
Замените эти совпадения напустая строка, чтобы избавиться от двойных пробелов везде.
Если в теге pre
нет <
или >
, вы можете добавить (?![^<>]*</pre>)
в конце выражения, чтобы оно не сработаловнутри pre
тегов.Это гарантирует, что </pre>
не следует за текущим соответствием, без каких-либо тегов между ними.
В результате:
<code>(?<=\s)\s+(?![^<>]*
)