我如何检查与变量而不是简单文本的匹配。我试过了:
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if ($_text =~ $_searchingText) {
print 'yes!';
}
两种选择:
插入$_searchingText
正则表达式模式:
print 'yes' if $_text =~ /$_searchingText/;
声明$_searchingText
为模式:
$_searchingText = qr/me/;
print 'yes' if $_text =~ $_searchingText;
似乎 index 函数会做你想做的事情(这似乎是在$_searchingText
内“索引” $_text
)。
尝试这个:
#!/usr/bin/perl -w
use strict;
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if(index $_searchingText, $_text){
print 'yes!';
}
或者您可以将要匹配的变量 ( $_searchingText
) 放在正则表达式匹配运算符中:
#!/usr/bin/perl -w
use strict;
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if($_text =~ m/$_searchingText/){
print 'yes!';
}
希望有帮助;让我知道我是否可以澄清
正如其他人指出的那样,您需要在正则表达式周围放置正则表达式标记:
if ($_text =~ /$_searchingText/) {
并不是
if ($_text =~ $_searchingText) {
Perl 也可以让标量 Perl 变量包含正则表达式,而不仅仅是字符串或数字:
my $_text = 'Please Help me here!';
my $_searchingText = qr/me/;
if ($_text =~ $_searchingText) {
print 'yes!';
}
qr
运算符使值包含在正$_searchingText
则表达式中,因此您不需要if
语句中的分隔符。它们是可选的。请参阅Regexp 类似引用的运算符。