para lo que vale, aquí hay un poco más de contexto:
expresiones regulares se llaman paréntesis "normales" porque están asociados con las gramáticas regulares y gramáticas regulares no pueden describir (un número ilimitado de) anidados (que puede describir un montón de paréntesis aleatorios, pero no puede hacer que coincidan en parejas ordenadas).
Una forma de entender esto es entender que las expresiones regulares pueden (algunos detalles que explicaré al final) convertir a autómatas finitos deterministas. lo cual suena intimidante, pero realmente solo significa que se pueden convertir en listas de "reglas", donde las reglas dependen de lo que coincida, y describir lo que puede coincidir.
por ejemplo, la expresión regular ab*c
se puede convertir en:
al principio, sólo se puede igualar a
. y luego ir a 2.
ahora, puede hacer coincidir b
y volver a 2, o el partido c
e ir a 3
ya está! ¡el partido fue un éxito!
y que es un "autómata determinista finito".
de todos modos, la parte interesante de esto es que si te sientas y tratas de hacer algo así para unir pares de paréntesis, ¡no puedes! intentalo. puede hacer coincidir un número finito haciendo más y más reglas, pero no puede escribir un conjunto general de reglas que coincida con un número ilimitado de paréntesis (debería agregar que las reglas tienen que ser de la forma "si coincide X vaya"). a Y ").
Ahora, obviamente, puede modificar eso de varias maneras. podría permitir reglas más complejas (como extenderlas para permitirle contar los paréntesis), y luego podría obtener algo que funcionara como esperaba. pero no sería una gramática regular.
dado que las expresiones regulares son limitadas de esta manera, ¿por qué se utilizan en lugar de algo más complejo? resulta que son algo así como un punto dulce: pueden hacer mucho, sin dejar de ser bastante simples y eficientes. las gramáticas más complejas (tipos de reglas) pueden ser más poderosas, pero también son más difíciles de implementar y tienen más problemas con la eficiencia.
descargo de responsabilidad y detalles adicionales prometidos: en la práctica, muchas expresiones regulares actualmente en realidad son más potentes que esto (y no deberían llamarse realmente "expresiones regulares"). pero lo anterior sigue siendo la explicación básica de por qué no deberías usar una expresión regular para esto.
ps La solución sugerida de jesse lo soluciona mediante el uso de una expresión regular varias veces; el argumento aquí es para un uso único de la expresión regular.
analizador? .......... –
['r" \ (. + \) "' No coincide.] (Http://ideone.com/oJQjV) – Amber