¿Cómo puedo comprobar si una determinada cadena contiene una determinada subcadena, utilizando Perl?
Más específicamente, quiero ver si s1.domain.com
está 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\Q
y\E
.O puede hacer lo que eugene y dijo y usar la función de índice . Solo una advertencia: el índice devuelve un
-1
cuando no puede encontrar una coincidencia en lugar de unundef
o0
.Por tanto, esto es un error:
Esto será incorrecto si
s1.domain.com
está 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::simple
todo parecía un pocoawk
-WARD ...: - \domain.com
igualarsubdomain.domain.com
usando 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
fc
se recomiendalc
para las comparaciones que no distinguen entre mayúsculas y minúsculas.