¿Cómo puedo comprobar si una determinada cadena contiene una determinada subcadena, utilizando Perl?
Más específicamente, quiero ver si s1.domain.comestá presente en la variable de cadena dada.
string
perl
string-matching
Pescado Belgin
fuente
fuente

:).Otra posibilidad es usar expresiones regulares, que es por lo que Perl es famoso:
Las barras invertidas son necesarias porque
.puede coincidir con cualquier carácter. Puede evitar esto utilizando los operadores\Qy\E.O puede hacer lo que eugene y dijo y usar la función de índice . Solo una advertencia: el índice devuelve un
-1cuando no puede encontrar una coincidencia en lugar de unundefo0.Por tanto, esto es un error:
Esto será incorrecto si
s1.domain.comestá al principio de su cadena. Personalmente, me han quemado con esto más de una vez.fuente
index()es más rápido que las expresiones regulares en el caso simple?=~,index(),~~ymatch::simpletodo parecía un pocoawk-WARD ...: - \domain.comigualarsubdomain.domain.comusando el REGEX anterior, ¿alguna idea?Ejemplo de subcadena que no distingue entre mayúsculas y minúsculas
Esta es una extensión de la respuesta de Eugene, que convierte las cadenas a minúsculas antes de verificar la subcadena:
fuente
fcse recomiendalcpara las comparaciones que no distinguen entre mayúsculas y minúsculas.