Necesidad de expresiones regulares para analizar palabras clave = 'valor' con comillas simples o dobles

StackOverflow https://stackoverflow.com/questions/962120

  •  12-09-2019
  •  | 
  •  

Pregunta

Estoy teniendo problemas para escribir una expresión regular (apto para preg_match () de PHP) que va a analizar pares de palabras clave = 'valor' independientemente de si el cadena está encerrada entre comillas simples o dobles. OIA en los dos casos siguientes necesito para obtener el y , donde el cadena puede contener el tipo de cerramiento no de comillas:

name="value"
name='value'
¿Fue útil?

Solución

En Perl se trata de una expresión regular que iba a funcionar. En primer lugar, igualó para el inicio de la línea a continuación partidos para uno o más caracteres no = y los pone a $ 1. A continuación se ve a los = a continuación, los unos no paréntesis, con una opción de juego para "o" y establece que a $ 2.

/^([^=]+)=(?:"([^"]+)"|'([^']+)')$/

Si usted quisiera que coincide con las expresiones en blanco como.

Esta = ""

Reemplazar los dos últimos + con un * De lo contrario, esto debería funcionar

Editar Como se mencionó en los comentarios. Doug utiliza ...

 /^\s?([^=]+)\s?=\s?("([^"]+)"|\'([^\']+)\')\s?/

Esto coincidir con uno espacio en blanco opcional en el extremo éter de la entrada o valor y se ha eliminado el marcador de fin de línea.

Otros consejos

/^(\w+?)=(['"])(\w+?)\2$/

¿Qué va a colocar la llave en $1 y el valor en $3.

A los pocos años de retraso, pero ya que esta cuestión es altamente clasificado en Google, y las respuestas no satisfizo mis necesidades, aquí hay otra expresión :

(?<key>\w+)\s*=\s*(['"]?)(?<val>(?:(?!\2)[^\\]|\\.|\w)+)\2

Esto corresponderá con comillas simples o dobles, teniendo en cuenta escaparon citas, y los valores no cotizados.

name = bar
name = "bar"
name = 'bar'
name = "\"ba\"r\""

Es, sin embargo, tiene una limitación en que si se pierde un valor la llave del siguiente par clave / valor que se lee. Esto puede ser abordado mediante el uso de un lista separada por comas de pares clave / valor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top