solo - regex termina con
ack regex: uniendo dos palabras en orden en la misma lĂnea (1)
Desea buscar word_1
, seguido de cualquier cosa, cualquier número de veces, seguido de word_2
. Eso debería ser
word_1.*word_2
Parece que estás usando *
como se usa a menudo en las búsquedas en la línea de comandos, pero en expresiones regulares es un cuantificador para el carácter anterior, lo que significa que coincida al menos 0 veces. Por ejemplo, la expresión regular a*
coincidirá con 0 o más a
s, mientras que la expresión regular a+
coincidirá con al menos una a
.
El metacarácter regex que significa "coincidir con cualquier cosa" es .
, entonces .*
"significa" coincidir con cualquier cosa, cualquier número de veces. Consulte perlrequick para obtener una breve introducción sobre el tema.
Me gustaría encontrar líneas en archivos que incluyan dos palabras, word_1
y word_2
en orden, como en la Line A
continuación, pero no como en la Line B
o la Line C
:
Line A: ... word_1 .... word_2 ....
Line B: ... word_1 ....
Line C: ... word_2 ....
Yo he tratado
$ack ''*word_1*word_2''
$ack ''(word_1)+*(word_2)+''
y los mismos comandos con ^
final de la expresión regular (en un intento de seguir la sintaxis de expresión regular de Perl).
Ninguno de estos comandos devuelve los archivos o las líneas que me interesan.
¿Qué estoy haciendo mal?
¡Gracias!