Como posso verificar se uma determinada string contém uma determinada substring, usando Perl?
Mais especificamente, quero ver se s1.domain.com
está presente na variável string fornecida.
string
perl
string-matching
Peixe Belgin
fonte
fonte
:
).Outra possibilidade é usar expressões regulares, pelas quais o Perl é famoso:
As barras invertidas são necessárias porque um
.
pode corresponder a qualquer caractere. Você pode contornar isso usando os operadores\Q
e\E
.Ou, você pode fazer como Eugene y declarado e usar o índice de função. Apenas um aviso: o índice retorna um
-1
quando não consegue encontrar uma correspondência em vez deundef
ou0
.Portanto, este é um erro:
Isso estará errado se
s1.domain.com
estiver no início de sua string. Eu pessoalmente fui queimado nisso mais de uma vez.fonte
index()
seja mais rápido do que regexps no caso simples?=~
, masindex()
,~~
ematch::simple
tudo parecia um poucoawk
estranho ...: - \domain.com
para correspondersubdomain.domain.com
usando o REGEX acima, todas as idéias?Exemplo de substring que não diferencia maiúsculas de minúsculas
Esta é uma extensão da resposta de Eugene, que converte as strings em minúsculas antes de verificar a substring:
fonte
fc
é recomendadolc
para comparações que não diferenciam maiúsculas de minúsculas.