Если у меня есть список регулярных выражений, есть ли простой способ определить, что ни один из них не вернет совпадение для одной и той же строки?Взаимно эксклюзивные регулярные выражения
То есть, список действителен тогда и только тогда, когда для всех строк максимум один элемент в списке будет соответствовать всей строке.
Кажется, что это будет очень сложно (возможно, невозможно?), Чтобы доказать окончательно, но я не могу найти никакой работы по этому вопросу.
Причина, по которой я прошу, состоит в том, что я работаю над токенизатором, который принимает регулярные выражения, и я хотел бы обеспечить, чтобы только один токен за один раз мог соответствовать головке ввода.
Возможный дубликат [Как вы можете определить, совпадают ли два регулярных выражения в строках, которые они могут сопоставить?] (Http://stackoverflow.com/questions/1849447/how-can-you-detect-if-two-regular -expressions-overlap-in-the-strings-they-can-mat) –
Я предполагаю, что неправильно понял. Вы имеете в виду, что два заданных регулярных выражения должны быть полностью взаимоисключающими для * любой * входной строки? I.e., из 2^32 возможных четырехбайтовых строк, регулярное выражение может соответствовать только одной возможности?Разве это не то же самое, что сказать: соответствовать этой точной строке? – Abel
Я имею в виду, что пересечение регулярных выражений должно быть нулевым. Строка не соответствует более 1 регулярному выражению. – captncraig