Expresión regular para detenerse en el primer partido

Mi patrón de expresiones regulares se parece algo a

 

Solo estoy interesado en la parte de citas asignadas a la ubicación. ¿No debería ser tan fácil como a continuación sin el codicioso interruptor?

 /.*location="(.*)".*/ 

No parece funcionar

Necesita convertir su expresión regular en no codiciosa, ya que, de manera predeterminada, "(.*)" Coincidirá con todas las "file path/level1/level2" xxx some="xxx" .

En su lugar, puedes hacer que tu punto-estrella no sea codiciosa, lo que hará que coincida con la menor cantidad de caracteres posible:

 /location="(.*?)"/ 

Agregar un ? en un cuantificador ( ? , * o + ) lo hace no codicioso.

location="(.*)" coincidirá desde “después de la location= hasta el” después de some="xxx menos que lo haga no codicioso. Por lo tanto, o necesita .*? (es decir, no codicioso) o mejor reemplace .* con [^"]* .

Qué tal si

 .*location="([^"]*)".* 

Esto evita la búsqueda ilimitada con. * Y coincidirá exactamente con la primera cita.

Use una correspondencia no codiciosa, si su motor lo admite. Añade el ? dentro de la captura.

 /location="(.*?)"/ 

Uso de cuantificadores perezosos ? sin bandera global es la respuesta.

P.ej,

enter image description here

Si tuvieras bandera global /g entonces, habría igualado todas las coincidencias de menor longitud como se muestra a continuación. enter image description here