Estoy escribiendo una expresión regular con Python y me enfrento a este problema. Mi expresión regular es la siguiente: :(\s+)"[^:"]*?([^"]:)?[^:"]*?"[^:"]*?([^"]:)?[^:"]*?"([,}]\s*) Mi objetivo es capturar texto como este:

  1. : "Some : text " and : another",
  2. : "Some " text",
  3. : "Some text : and, repeating : one " and : another",

La expresión regular anterior funciona bien con los dos primeros textos.

Pero ahora, estoy tratando de capturar el tercer texto con expresiones regulares como esta, pero no funciona en absoluto. :(\s+)"([^:"]*?([^"]:)?[^:"]*?)*"([^:"]*?([^"]:)?[^:"]*?)*"([,}]\s*)

¿Alguien puede ayudarme, por favor?

respuesta

Prueba esto:^:[\s\S]+?,$

Demostración: https://regex101.com/r/GSjMk8/2

Coincide con cada línea que comienza :y termina con,

Finalmente encontré la solución después de algunos días de investigación :). Solo necesito permitir que coincidan los dos puntos reemplazando this [^:"]con this [^"]. Y eso funciona bien. Entonces, toda la expresión regular se ve así si alguien enfrenta el mismo problema: :(\s+)"([^"]*?(:?[^"]:)?[^"]*?)"([^"]*?(:?[^"]:)?[^"]*?)"([,}]\s*)

Nuevo colaborador
RATOVONJANAHARY Miandry is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.