Perl - 如果字符串包含文本?

时间:2011-08-10 13:26:04

标签: string perl string-matching

我想使用curl来查看页面的来源,如果该源包含与该字符串匹配的单词,那么它将执行打印。我该怎么做if $string contains

在VB中就像是。

dim string1 as string = "1"
If string1.contains("1") Then
Code here...
End If

类似于Perl的东西。

3 个答案:

答案 0 :(得分:86)

如果您只需要在另一个字符串中搜索一个字符串,请使用index函数(如果您想从字符串末尾开始扫描,请使用rindex):

if (index($string, $substring) != -1) {
   print "'$string' contains '$substring'\n";
}

要搜索字符串以查找pattern匹配项,请使用匹配运算符m//

if ($string =~ m/pattern/) {
    print "'$string' matches the pattern\n";       
}

答案 1 :(得分:27)

if ($string =~ m/something/) {
   # Do work
}

something是正则表达式。

答案 2 :(得分:1)

对于不区分大小写的字符串搜索,请结合使用index(或rindex)和fc。此示例扩展了Eugene Yarmash的答案:

use feature qw( fc ); 
my $str = "Abc"; 
my $substr = "aB"; 

print "found" if index( fc $str, fc $substr ) != -1;
# Prints: found

print "found" if rindex( fc $str, fc $substr ) != -1;
# Prints: found

$str = "Abc";
$substr = "bA";

print "found" if index( fc $str, fc $substr ) != -1;
# Prints nothing

print "found" if rindex( fc $str, fc $substr ) != -1;
# Prints nothing

如果找不到子字符串,则indexrindex都返回-1
并且fc返回其字符串参数的大小写折叠形式,因此应在此处使用它,而不要使用(更熟悉的)uclc。请记住要启用此功能,例如使用use feature qw( fc );