>>168894
Hace un par de meses lo use para crear una expresión regular en plan "genera un regexp para obtener los datos del siguiente XML" (lo hice asi ya que los parseadores que estuve probando eran mas lentos que la mierda y solo parseaba el archivo a medias) y de hecho funciono bastante bien fuera de algunas cosas que tuve que ir ajustando sobre la marcha.
Hace poco le pedí que generara una nueva expresión que detecte las cadenas que estan entre comillas pero que omita las que a su vez tienen espacios o contuvieran
algunamierda.com, y obtuve esto:
Puedes utilizar la siguiente expresión regular para detectar cadenas entre comillas dobles que no contengan espacios ni la palabra "ejemplo.com":
^"(?!.*\s)(?!.*ejemplo\.com).*"$
Explicación de la expresión regular:
*
^ y
$ - Representan el inicio y el final de la cadena respectivamente, asegurando que la expresión coincida con toda la cadena y no solo una parte de ella.
*
" - Coincide con una comilla doble inicial.
*
(?!.*\s) - Utiliza una negación negativa para asegurarse de que no haya espacios en la cadena.
(?!...) es un lookahead negativo, lo que significa que lo que sigue no debe coincidir con el patrón especificado.
.*\s coincide con cualquier cantidad de caracteres seguidos de un espacio.
*
(?!.*ejemplo\.com) - Utiliza una negación negativa para asegurarse de que la cadena no contenga "ejemplo.com".
(?!...) es un lookahead negativo, lo que significa que lo que sigue no debe coincidir con el patrón especificado.
.*ejemplo\.com coincide con cualquier cantidad de caracteres seguidos de "ejemplo.com".
*
.* - Coincide con cualquier cantidad de caracteres (excepto saltos de línea).
*
" - Coincide con una comilla doble final.
Ten en cuenta que la expresión regular puede variar dependiendo del lenguaje de programación o la herramienta que estés utilizando para trabajar con expresiones regulares. Asegúrate de ajustarla según tus necesidades.
----
Aunque en este caso no resulto tan bien como esperaba ya que al hacer una prueba rápida en
https://regex101.com solo detecta la ultima cadena de una lista, por lo que tuve que modificar el patrón hasta que me quedo asi:
"(?!.*algunamierda\.com)[^"\s]+"
Aun asi me resulto útil ya que nunca me acuerdo como hacer un lookahead negativo.