Для початку я не пропоную використовувати "*" у регулярних виразах. Так, я знаю, це найпоширеніший розділовий символ, але все-таки це погана ідея. Це тому, що, хоча це відповідає будь-якій кількості повторень для цього символу, "будь-який" включає 0, що, як правило, є те, для чого ви хочете викинути синтаксичну помилку, а не приймати. Натомість я пропоную використовувати +
знак, який відповідає будь-якому повторюванню довжини> 1. Більше того, з того, що я бачу, ви маєте справу з виразками з фіксованою довжиною. Як результат, ви, ймовірно, можете використовувати {x, y}
синтаксис, щоб конкретно вказати потрібну довжину.
Однак якщо вам справді потрібне не жадібне повторення, я пропоную порадитися з усіма сильними ?
. Це, якщо розміщувати після закінчення будь-якого специфікатора повторення регулярних виразів, змусить цю частину регулярного вираження знайти найменшу кількість можливого тексту.
?
Коли це було сказано, я був би дуже обережний з тим, як це, як і викрутка Sonic у доктора. Хто має тенденцію робити, як я можу сказати, "злегка" небажані речі, якщо не ретельно відкалібровані. Наприклад, щоб використати ваш приклад, він визначить ((1)
(відзначте відсутність другого rparen) як збіг.