Buscar 'palabra' que no esté seguida de un determinado carácter

Resuelto user836026 asked hace 9 años • 1 respuestas

¿Cuál es la expresión regular para buscar una wordcadena que no esté seguida del @símbolo?

Por ejemplo:

mywordLLD         OK
myword.dff        OK
myword@ld         Exclude
user836026 avatar Jul 03 '15 15:07 user836026
Aceptado

La anticipación(?!@) negativa coincidirá sólo si no aparece inmediatamente después :word@ word

word(?!@)

Si necesita fallar una coincidencia cuando a wordva seguido de un carácter/cadena en algún lugar a la derecha , puede usar cualquiera de los tres siguientes

word(?!.*@)       # Note this will require @ to be on the same line as word
(?s)word(?!.*@)   # (except Ruby, where you need (?m)): This will check for @ anywhere...
word(?![\s\S]*@)  # ... after word even if it is on the next line(s)

Ver demostración

Esta expresión regular coincide con wordla subcadena y (?!@)se asegura de que no haya ningún @derecho después de ella y, si está ahí, wordno se devuelve como una coincidencia (es decir, la coincidencia falla ).

De expresiones regulares.info :

La anticipación negativa es indispensable si desea hacer coincidir algo que no esté seguido de otra cosa. Al explicar las clases de caracteres , este tutorial explica por qué no se puede utilizar una clase de carácter negada para que coincida con un qno seguido de un u. La anticipación negativa proporciona la solución:q(?!u) . La construcción de anticipación negativa es el par de paréntesis, con el paréntesis de apertura seguido de un signo de interrogación y un signo de exclamación .

Y en la página de clases de personajes :

Es importante recordar que una clase de personaje negada aún debe coincidir con un personaje. q[^u]no significa: "a qno seguida de a u". Quiere decir: "a qseguido de un carácter que no es un u". No coincide con el qde la cadena Iraq. Coincide con qy el espacio después de qen Irak es un país. De hecho: el espacio se convierte en parte de la coincidencia general, porque es el "carácter que no es u" el que coincide con la clase de carácter negado en la expresión regular anterior. Si desea que la expresión regular coincida con q, y solo con q, en ambas cadenas, debe usar una búsqueda anticipada negativa :.q(?!u)

Wiktor Stribiżew avatar Jul 03 '2015 08:07 Wiktor Stribiżew