Hace dos días comencé a trabajar en un analizador de código y estoy atascado.PHP y RegEx: divide una cadena por comas que no están entre paréntesis (y también paréntesis anidados)
¿Cómo puedo dividir una cadena por comas que no están entre paréntesis dentro, te voy a mostrar lo que significa:
que tienen esta cadena para analizar:
one, two, three, (four, (five, six), (ten)), seven
me gustaría conseguir este resultado:
array(
"one";
"two";
"three";
"(four, (five, six), (ten))";
"seven"
)
pero en cambio me sale:
array(
"one";
"two";
"three";
"(four";
"(five";
"six)";
"(ten))";
"seven"
)
¿Cómo puedo hacer esto en PHP RegEx.
¡Gracias de antemano!
Sí, es más fácil, pero no funciona en el caso de los paréntesis anidados, así: uno, dos, tres, (cuatro, (cinco, seis), (diez)), siete –
Ese es el punto en el que debe usar un analizador real Las expresiones regulares no pueden contar ni manejar estados. – Gumbo
Tengo que usar expresiones regulares. Las expresiones regulares son recursivas y codiciosas, puedes lograrlo usándolas. –