Answers:
要查找字符串是否包含子字符串,可以使用以下index
函数:
if (index($str, $substr) != -1) {
print "$str contains $substr\n";
}
如果未找到子字符串,它将返回$substr
in $str
或-1中第一次出现的位置。
另一种可能性是使用正则表达式,这是Perl的著名之处:
if ($mystring =~ /s1\.domain\.com/) {
print qq("$mystring" contains "s1.domain.com"\n);
}
需要使用反斜杠,因为a .
可以匹配任何字符。您可以使用\Q
和\E
运算符解决此问题。
my $substring = "s1.domain.com";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
或者,您可以按照eugene y进行操作并使用索引函数。只是警告-1
一下:Index 找不到匹配项时会返回a ,而不是undef
or 0
。
因此,这是一个错误:
my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
如果s1.domain.com
在字符串的开头,这将是错误的。我个人对此不止一次。
index()
在简单的情况下比正则表达式快?
domain.com
匹配subdomain.domain.com
任何想法?
:
)特殊的字符(在此变量字符串中)进行两次转义。