Hola gente, hace un par de días estoy luchando para hacer una expresión regular que haga lo siguiente: extraer de una cadena de texto todos los signos de pregunta (
?) siempre y cuando estos signos no esten dentro de comillas simples o dobles (
"?") ni tampoco con comillas y espacios (
" ? ").
Osea dentro de una cadena de este tipo:
Código PHP:
INSERT INTO tabla (col1, col2, col3, col4, col5) VALUES (?, "?", " ? ", " ?", ? )
debería extraer solo el primer y último signo de pregunta, ya que los del medio están entre comillas (y algunos comillas y luego espacios).
He llegado a una expresión que hace justo lo contrario... me extrae los signos del medio y me excluye los que quiero extraer, pero no encuentro forma de "invertirla" para conseguir justo lo contrario:
Código PHP:
$s='INSERT INTO tabla (col1, col2, col3, col4, col5) VALUES (?, "?", " ? ", " ?", ? )';
preg_match_all('/[\"\']\s*(\?)\s*[\"\']/', $s, $m);
print_r($m);
Muchas gracias de antemano.
Saludos.