Большинство ошибок в регулярных выражениях делятся на три категории:
Скрытые пропуски - пропуская '^
' в начале или '$
' в конце, используя '*
', где вы должны были использовать +
'- это всего лишь ошибки новичка, но для глючного регулярного выражения обычно все же проходят все автоматизированные тесты.
Случайный успех - когда часть регулярного выражения является совершенно неправильной и обречена на неудачу в 99% использования в реальном мире, но по чистой глупой удаче ей удается пройти полдюжины автоматизированные тесты, которые вы написали.
Слишком большой успех - когда одна часть регулярного выражения соответствует намного большему, чем вы думали. Например, токен [^., ]*
также будет соответствовать \r
и \n
, что означает, что ваше регулярное выражение теперь может соответствовать нескольким строкам текста, даже если вы завернули его в ^
и $
.
На самом деле нет замены для правильного изучения регулярных выражений. Прочтите справочное руководство по вашему движку regex и используйте инструмент, такой как Regex Buddy, чтобы экспериментировать и знакомиться с всеми функциями, и особенно обращать внимание на любое особое или необычное поведение, которое они могут демонстрировать. Если вы выучите регулярные выражения правильно, вы избежите большинства ошибок, упомянутых выше, и вы будете знать, как написать небольшое количество автоматизированных тестов, которые могут гарантировать все крайние случаи без чрезмерного тестирования очевидных вещей (действительно [A-Z]
сопоставлять каждую букву между A и A? Я бы лучше написал 26 вариантов модульного теста, чтобы убедиться!).
Если вы не выучите регулярные выражения полностью, вам нужно написать нелепое количество автоматических тестов, чтобы доказать, что ваше магическое регулярное выражение верно.