Solo estoy tratando de obtener todos los atributos de esta etiqueta xml usando una expresión regular.

<img src="data:image/jpeg;base64,somthing=" width="280" height="186" >

Actualmente estoy usando [^ ]*[ ]*=[ ]*\".*?\", que coincide con cualquier cosa, luego uno o un espacio cero, luego un signo eqaul, luego uno o un espacio cero, luego una comilla doble y luego busca la siguiente comilla doble.

El problema es que si hay un signo igual, se saltan las comillas dobles ingrese la descripción de la imagen aquí

Si no hay un signo igual al final, todo funciona bien. ¿Dónde me perdí?

enter image description here

0
Fangming 10 dic. 2017 a las 04:35

2 respuestas

La mejor respuesta

Está utilizando el operador * cuando intenta capturar uno o cero espacios ([ ]*), el operador que desea usar es este en lugar de '?' ([ ]?)

Como sugerencia, así es como capturaría los atributos en la etiqueta xml:

\w+\s?=\s?\".*?\"

EDITAR : por cierto, * El operador captura cero o más coincidencias, ni ninguna o una como deseaba.

1
Diego Fernando Bautista Torres 10 dic. 2017 a las 01:55

Dado su ejemplo, la siguiente expresión regular parece más intuitiva: (\ S {5,})

El uso de {5,} está aquí para deshacerse de Ver resultado: https://regex101.com/r/Nfj6zr/3

1
Jonathan C. 10 dic. 2017 a las 01:54