您需要了解 Perl 中的 Regular Expressions。 Perl 并没有发明正则表达式,而是极大地扩展了这个概念。事实上,许多其他编程语言都专门讨论使用 Perl 正则表达式。
正则表达式匹配特定的单词模式。例如,/cat/ 匹配字符串中的序列 cat。
if ( $string =~ /cat/ ) {
print "String contains the letters 'cat' in a row\n";
}
在许多方面,这与以下内容相同:
my $location = index ( $string, "cat" );
if ( $location =! -1 ) { # index returns -1 when substring isn't found
print "String contains the letters 'cat' in a row\n";
}
但是,这两个都会匹配:
"Don't let the cat out of the bag"
"The Sears catalog arrived in the mail"
您不想匹配最后一个。所以,你可以这样做:
my $location = index $string, " cat ";
现在,index $string, " cat " 将与单词 catalog 不匹配。结案!或者是吗?怎么样:
"cat and dog it doth rain."
如果句子以“cat”开头,也许你可以检查并说没问题:
if ( (index ($string, " cat ") != -1) or (index ($string, "cat") = 0) ) {
print "String contains the letters 'cat' in a row\n";
}
但是,这些呢?
"The word CAT in all uppercase"
"Stupid cat"
-
"Cat! Here Cat! Common Cat!":“猫”后面的标点符号
-
"Don't let the 'cat' out of the 'bag'": "cat" 两边的引号
可能需要几十行来指定这些条件中的每一个。
但是:
if ( $string =~ /\bcat\b/i ) {
print "String contains the word 'cat' in it\n";
}
指定每一个 -- 然后是一些。 \b 表示这是一个单词边界。这可以是空格、制表符、引号、行的开头或结尾。因此/\bcat\b/ 指定这应该是单词cat 而不是catalog。末尾的 i 告诉您的正则表达式在匹配时忽略大小写,因此您会找到 Cat、cat、CAT、cAt 以及所有其他可能的组合。
事实上,正是 Perl 的正则表达式使 Perl 成为如此流行的语言。
幸运的是,Perl 提供了两个关于正则表达式的教程:
希望这会有所帮助。