Шаблон класса отрицанных символов будет соответствовать своему содержимому за один шаг, в то время как ленивый расширит символ за символом, что должно повысить эффективность первого.
Будьте внимательны относительно разрывов строк, .
может включать или не включать символ переноса строки в зависимости от двигателя и модификаторов, [^ =] будет включать его почти во всех двигателях.
Если за шаблоном следуют другие элементы, .+?
может расширяться через символы границы, а [^=]+
- никогда. Например. ([^=]+)=3
и (.+?)=3
будут совпадать по-разному на 1=2=3
.