38

我猜标签是一个变量,它正在检查9eaf- 但是这在 Perl 中存在吗?

这里的“=~”符号是做什么的,前后的“/”字符是9eaf什么?

if ($tag =~ /9eaf/)
{
    # Do something
}
4

4 回答 4

47

=~是测试正则表达式匹配的运算符。该表达式/9eaf/是一个正则表达式(斜杠//是分隔符,9eaf是实际的正则表达式)。换句话说,测试是说“如果变量 $tag 匹配正则表达式 /9eaf/ ...”,并且如果存储在其中的字符串在任何点按顺序连续$tag包含这些字符,就会发生这种匹配。9eaf所以这对于字符串来说是正确的

9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

和许多其他人,但不是字符串

9eaxxx
9xexaxfx

和许多其他人。查找“perlre”手册页以获取有关正则表达式的更多信息,或谷歌“perl 正则表达式”。

于 2012-04-04T20:56:45.607 回答
11

'=~' 操作符是一个二元绑定操作符,表示后面的操作将搜索或修改左边的标量。

默认(未指定)运算符是 'm' 表示匹配。

匹配运算符有一对指定正则表达式开始和结束的字符。最常见的是,这是'//'。

阅读Perl Re 教程

于 2012-04-04T21:01:39.067 回答
7

该代码正在测试是否9eaf是 的值的子字符串$tag


$tag =~ /9eaf/

简称

$tag =~ m/9eaf/

m//匹配运算符在哪里。它将正则表达式模式 (regexp)与(由 的左侧返回)9eaf绑定的值匹配。=~=~


包括m//和在内=~的运算符记录在perlop中。

正则表达式(例如9eaf)记录在perlreperlretut中。

于 2012-04-04T21:57:46.407 回答
3

检查标量$tag(可能是字符串)与正则表达式的匹配,正则表达式/9eaf/仅检查字符串"9eaf"是否为$tag. 退房perldoc perlretut

于 2012-04-04T20:56:43.380 回答