regex - regulares - Expresión regular para una cadena que contiene una palabra pero no otra
expresiones regulares javascript caracteres especiales (5)
Estaba buscando una manera de evitar --línea amortiguada en una cola en una situación similar a la OP y la solución de Kobi funciona muy bien para mí. En mi caso, excluyendo líneas con "bot" o "spider" mientras incluyo ''/'' (para mi documento raíz).
Mi comando original:
tail -f mylogfile | grep --line-buffered -v ''bot/|spider'' | grep '' / ''
Ahora se convierte en (con "-P" interruptor perl):
tail -f mylogfile | grep -P ''^(?!.*(bot|spider)).*/s///s.*$''
Estoy configurando algunos objetivos en Google Analytics y podría utilizar un poco de ayuda de expresiones regulares.
Digamos que tengo 4 URL
http://www.anydotcom.com/test/search.cfm?metric=blah&selector=size&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah2&selector=style&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah3&selector=size&value=1
http://www.anydotcom.com/test/details.cfm?metric=blah&selector=size&value=1
Quiero crear una expresión que identifique cualquier URL que contenga el selector de cadena = tamaño pero NO contiene detalles.cfm
Sé que para encontrar una cadena que NO contenga otra cadena, puedo usar esta expresión:
(^((?!details.cfm).)*$)
Pero no estoy seguro de cómo agregar la porción del selector = tamaño .
¡Cualquier ayuda sería muy apreciada!
Esto debería hacerlo:
^(?!.*details/.cfm).*selector=size.*$
^.*selector=size.*$
debe ser lo suficientemente claro. El primer bit, (?!.*details.cfm)
es una búsqueda anticipada negativa: antes de hacer coincidir la cadena, verifica que la cadena no contenga "details.cfm" (con cualquier número de caracteres antes).
Una forma simple de hacerlo es especificar 0 instancias de la cadena haciendo lo siguiente
(string_to_exclude){0}
regex podría ser (sintaxis perl):
`/^[(^(?!.*details/.cfm).*selector=size.*)|(selector=size.*^(?!.*details/.cfm).*)]$/`
^(?=.*selector=size)(?:(?!details/.cfm).)+$
Si su motor regex admite cuantificadores posivos (aunque sospecho que Google Analytics no lo hace), entonces supongo que funcionará mejor para los grandes conjuntos de entrada:
^[^?]*+(?<!details/.cfm).*?selector=size.*$