Si tengo una lista de expresiones regulares, ¿hay alguna manera fácil de determinar que ninguna de ellas devolverá una coincidencia para la misma cadena?Expresiones regulares mutuamente excluyentes
Es decir, la lista es válida si, y solo si, para todas las cadenas, un máximo de un elemento de la lista coincidirá con la cadena completa.
Parece que esto será muy difícil (¿quizás imposible?) Para demostrarlo definitivamente, pero parece que no puedo encontrar ningún trabajo sobre el tema.
La razón por la que pregunto es que estoy trabajando en un tokenizador que acepta expresiones regulares, y me gustaría asegurar que solo un token a la vez pueda coincidir con el encabezado de la entrada.
posible duplicado de [¿Cómo se puede detectar si dos expresiones regulares se superponen en las cadenas con las que pueden coincidir?] (Http://stackoverflow.com/questions/1849447/how-can-you-detect-if-two-regular -expressions-overlap-in-the-strings-they-can-mat) –
Supongo que no entendí bien. ¿Quiere decir que dos expresiones regulares dadas deben ser totalmente excluyentes para * cualquier * cadena de entrada? Es decir, la de 2^32 de posibles cadenas de cuatro bytes, ¿una expresión regular solo puede coincidir con una posibilidad?¿No es lo mismo que decir: coincide con esta cadena exacta? – Abel
Quiero decir que la intersección de las expresiones regulares debe ser cero. Ninguna cadena coincide con más de 1 regex. – captncraig