¿Cómo se usa Notepad ++ regex pipe | para cuerdas de más de un personaje?
Pregunta
Estoy tratando de hacer que notepad ++ regex encuentre todas las instancias de " abc " y " def " en la siguiente frase:
El abc fue a la definición.
Ninguna de las siguientes sintaxis parece funcionar:
- abc | def
- [abc | def]
- (abc) | (def)
- (abc | def)
NOTA: " [a | d] " coincide con cualquier instancia de " a " o " d " cuando probé
Solución
Actualiza a Notepad ++ v6. Desde la lista de cambios: se admite " PCRE (Expresiones regulares compatibles con Perl) " He verificado que | funciona en la búsqueda de expresiones regulares cuando se usa Notepad ++ v6.
Otros consejos
No tiene nada de especial en " más de un carácter " ;, Notepad ++ no admite el | personaje en regex. Ni siquiera " a | d " trabajos. Consulte la página de ayuda de expresiones regulares . La versión 6.1.1 de Notepad ++ ahora admite |
.
Sugeriría usar un editor con una implementación de expresiones regulares adecuada como gvim o UltraEdit .
Dentro de una declaración de conjunto de caracteres ( […]
) solo los caracteres \
, ]
y -
son caracteres especiales con las funciones especiales de escapar del siguiente carácter, cerrar la declaración del conjunto de caracteres y marcar un rango de caracteres (solo si no se han escrito al principio o al final), respectivamente. Cualquier otro carácter se interpreta como un carácter plano.
Así es su |
en [a | d]
lo que significa que [a | d]
describe cualquiera de los caracteres a
, |
o d
y no solo a
o d
como a | d
hace.
Estaba teniendo el mismo problema, que es cómo aterricé aquí. Ya que es una deficiencia de notepad ++, podemos hacerlo usando Powershell. En su caso, simplemente ejecute una cadena de selección:
`ss abc,def filename`
Si está en Unix, tiene otras herramientas como grep, por supuesto.
Reconozco que querías una solución para notepad ++, y yo también, pero a veces tienes que hacerlo.
El | debería funcionar ahora.
Gracias a la mejora de Regex en Notepad ++
abc | def
(abc) | (def)