如果它以它开头,我想匹配它。例如,这里的 'is' 将通过 if 条件,因为 'is' 是 'this' 的一部分。我不想要那个。我希望只有当有一个“是”字时,它才会通过。
#!/usr/bin/perl
$mysub= "is";
$str="this good morning";
if($str=~ /$mysub/){
print ("Here");
}
else
{
print ("Not in it");
}
如果它以它开头,我想匹配它。例如,这里的 'is' 将通过 if 条件,因为 'is' 是 'this' 的一部分。我不想要那个。我希望只有当有一个“是”字时,它才会通过。
#!/usr/bin/perl
$mysub= "is";
$str="this good morning";
if($str=~ /$mysub/){
print ("Here");
}
else
{
print ("Not in it");
}
使用“^”匹配行运算符的开头。
#!/usr/bin/perl
$mysub= "is";
$str="this good morning";
if($str=~ /^$mysub/){
print ("Here");
}
else
{
print ("Not in it");
}
asantaballa给出了一个很好的答案,因为在这种情况下可以使用线锚的开头来避免匹配this
。但是,如果要在字符串内部进行匹配,例如:
my $str = "don't match this";
然后你不能使用circumflex ^
,但你可以使用单词边界:
if ($str =~ /\bis\b/) {
单词边界将按照它所说的进行,匹配单词边界,并确保您没有部分匹配。
此外,你不应该在没有这两个 pragma 的情况下编写代码:
use strict;
use warnings;
为什么?因为它会伤害你的学习,让调试更难,让你的生活更痛苦。
#!/usr/bin/perl
use strict;
use diagnostics;
my $mysub= "is";
my $str="this good morning";
if($str=~ /\W+$mysub\W+/){
print ("Here");
}
else
{
print ("Not in it");
}
添加了诊断以获取有关您的代码的问题信息,该信息报告缺少 $mysuf 和 $str 的声明。
也使用 \W+ 作为分隔符,它们匹配任何非 \w。