regex - texto - Una expresión regular para excluir una palabra/cadena
expresiones regulares para buscar texto (3)
Tengo una expresión regular de la siguiente manera:
^/[a-z0-9]+$
Esto coincide con cadenas como /hello
o /hello123
.
Sin embargo, me gustaría excluir un par de valores de cadena como /ignoreme
y /ignoreme2
.
¡He probado algunas variantes pero parece que no puedo hacer que ninguna funcione!
Mi último intento débil fue
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
Cualquier ayuda seria gratamente apreciada :-)
Aquí hay otra manera: (usando una mirada negativa hacia adelante ):
^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$
Nota: Solo hay una expresión de captura: ([a-z0-9]+)
.
Como quiere excluir ambas palabras, necesita una conjunción:
^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
Ahora ambas condiciones deben ser verdaderas (ni ignoreme ni ignoreme2 están permitidas) para tener una coincidencia.
Esto debería hacerlo:
^//b([a-z0-9]+)/b(?<!ignoreme|ignoreme2|ignoreme3)
Puedes agregar tantas palabras ignoradas como desees, aquí hay una implementación simple de PHP:
$ignoredWords = array(''ignoreme'', ''ignoreme2'', ''ignoreme...'');
preg_match(''~^//b([a-z0-9]+)/b(?<!'' . implode(''|'', array_map(''preg_quote'', $ignoredWords)) . '')~i'', $string);