Мне нужно знать, исходя из самого регулярного выражения (без каких-либо выборочных данных), какое максимальное количество полей оно может найти.
Например, для выражения
"^(ABC) ?([0-9]{4}|[0-9]{6})?(?:(?:/)([0-9]{4}|[0-9]{6}))?(?:(?: ?XYZ ?)([0-9]{4}))?$"
Я бы хотел, чтобы какая-то функция принимала это за String
(или Pattern
) и возвращала 4, а
"^(DEF) ?([0-9A-Z]{1,2})(?:(?:/)([0-9A-Z]{1,2}))?$"
и возврат 3.
Было бы проще, если бы все эти группы были захвачены, но не все, и я хотел бы избежать написания собственного парсера, если это возможно.