Вы должны использовать соответствующий инструмент для работы.Это означает, что вы не должны избегать регулярных выражений, вы должны использовать его, когда это необходимо.
Если вы просто ищете фиксированную последовательность символов, используйте строковые операции.
Если вы ищетедля шаблона используйте регулярные выражения.
Пример
Найдите слово «Foo».использовать строковые операции, он также найдет "Foobar", это нормально?НЕТ, тогда, может быть, будет поиск «Foo», но тогда он не найдет «Foo» и «Foo».
С регулярным выражением проблем нет, вы можете сопоставить границу слова / \ mFoo \ M /и это регулярное выражение не будет медленным.
Я думаю, что это негативное изображение возникает из-за особых проблем, таких как катастрофический откат .
Был недавний пример ( катастрофическое обратное отслеживание, которое не должно происходить на этом регулярном выражении ), где это поведение было неожиданным.
Заключение
Регулярное выражение должнобыть хорошо спроектированным, если это не так, производительность может быть катастрофической.Но то же самое может случиться и с вашим обычным кодом, если вы используете плохой алгоритм.
Для небольшой работы почти никогда не должно быть проблемой использование регулярного выражения, если ваша задача больше и ее нужно часто повторять, сделайте тест.
Исходя из собственного опыта, я анализирую действительно большие текстовые файлы (около ста МБ) и использую регулярные выражения, чтобы найти интересующие меня строки, и у меня не возникает проблем с производительностью из-за регулярных выражений..
Вот интересное прочтение об оптимизации кода