es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Expresión regular: la búsqueda hacia atrás negativa con asterisco escapo no funciona correctamente.

Tengo los siguientes datos:

FIT 13.5 ON 16 LNR, LWD[GR,RES,PWD] @ 10340, M12.8, NO SWC, *13-3/8 X 16* (13.9) EXP LNR @ 8696-10340, FIT 14.4, LWD(GR, RES, PWD  
FIT 12.4 ON 20, LWD[ARC,PWD  
FIT 15.0 ON 16, LWD[ARC,PWD]  
FIT 13.3 ON 11-3/4, LWD[ARC,SON,PWD] @ 12065, PREP TO DRILL  
9-5/8 LNR @ 11695-16163, FIT 14.9, LWD[ARC,SON,DEN,NEUT,CMR,TESTRAK], (SON FAILED), NO SWC, REAMING (TO RUN CSG ) 

Estoy tratando de escribir una expresión regular que encuentre todas las fracciones sin un asterisco, así que utilicé un “negative lookbehind”:

(?<= \*)(\d{1,2}-\d\/\d)

Naturalmente (porque nada puede ser fácil), la expresión regular piensa que el 1 en el 13 es parte del “lookbehind”:

Regex negative lookbehind

Si lo cambio a un “positive lookbehind”, funciona como debería si quisiera encontrar fracciones con un asterisco:

Regex positive lookbehind

Eso no es lo que necesito. Estoy tratando de hacer que la expresión regular ignore todas las cifras entre dos asteriscos en una cadena.

¿Alguna idea de cómo hacer que haga lo que necesito?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para ignorar todas las fracciones entre dos asteriscos en una cadena de texto, puedes usar una búsqueda negativa en lugar de una búsqueda hacia atrás. Aquí está la expresión regular actualizada:

    (?<!\*)(\d{1,2}-\d\/\d)(?!\*)
    

    Explicación:
    (?<!\*): Búsqueda negativa hacia atrás para asegurarse de que no haya un asterisco antes de la fracción.
    (\d{1,2}-\d\/\d): Coincide con la fracción.
    (?!\*): Búsqueda negativa hacia adelante para asegurarse de que no haya un asterisco después de la fracción.

    Esto solo coincidirá con las fracciones que no tienen un asterisco antes o después de ellas.

Comments are closed.