В ответ на комментарий вот сравнение производительности для жадных [a-zA-Z0-9].*[a-zA-Z0-9]
и не жадных [a-zA-Z0-9].*?[a-zA-Z0-9]
.
Жадная версия найдет первый алфавитно-цифровой код, полностью совпадет до конца и вернется к последнему буквенно-цифровому номеру, найдя максимально возможное совпадение. Для длинной строки это самая медленная версия. Нежадная версия находит первый буквенно-цифровой код и пытается не соответствовать следующим символам, пока не будет найден другой буквенно-цифровой символ (т. Е. Для каждой буквы, совпадающей с пустой строкой, она пытается найти [a-zA-Z0-9]
, потерпит неудачу и .
) .
Сравнительный анализ (эмпирические результаты):
Если буквенно-цифровые символы расположены очень далеко, жадная версия быстрее (даже быстрее, чем версия Gumbo).
Если буквенно-цифровые символы близки друг к другу, жадная версия значительно медленнее.
Тест: http://jsbin.com/eletu/4
Сравнивает 3 версии:
[a-zA-Z0-9].*?[a-zA-Z0-9]
[a-zA-Z0-9][^a-zA-Z0-9]*[a-zA-Z0-9]
[a-zA-Z0-9].*[a-zA-Z0-9]
Вывод: нет. Как всегда, вы должны проверить типичные данные.