您需要了解Perl 中的正则表达式。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 "
不会匹配单词目录。结案!或者是吗?关于什么:
"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'"
:“猫”周围的引号
可能需要几十行来指定这些条件中的每一个。
然而:
if ( $string =~ /\bcat\b/i ) {
print "String contains the word 'cat' in it\n";
}
指定每一个 - 然后是一些。说这\b
是一个单词边界。这可以是空格、制表符、引号、行的开头或结尾。因此/\bcat\b/
指定 this 应该是单词cat
而不是catalog
。最后i
的 告诉您的正则表达式在匹配时忽略大小写,因此您会找到Cat
, cat
, CAT
,cAt
和所有其他可能的组合。
事实上,正是 Perl 的正则表达式使 Perl 成为如此流行的语言。
幸运的是,Perl 没有一个,而是两个关于正则表达式的教程:
希望这可以帮助。