=~ 在 Perl 中做什么?

问题描述 投票:0回答:4

我猜标签是一个变量,它正在检查

9eaf
- 但这在 Perl 中存在吗?

这里的“=~”符号是做什么的,

9eaf
前后的“/”字符是做什么的?

if ($tag =~ /9eaf/)
{
    # Do something
}
perl operators
4个回答
53
投票

=~
是测试正则表达式匹配的运算符。表达式
/9eaf/
是正则表达式(斜线
//
是分隔符,
9eaf
是实际的正则表达式)。换句话说,测试是说“如果变量 $tag 与正则表达式 /9eaf/ ... 匹配”,并且如果存储在
$tag
中的字符串在任意点按顺序连续包含这些字符
9eaf
,则发生此匹配。所以对于弦乐来说也是如此

9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

还有很多其他的,但不是琴弦

9eaxxx
9xexaxfx

还有很多其他的。有关正则表达式的更多信息,请查阅 'perlre' 手册页,或搜索“perl 正则表达式”。


13
投票

‘=~’运算符是一个二元绑定运算符,表示以下操作将搜索或修改左侧的标量。

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

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

阅读 Perl Re 教程


9
投票

代码正在测试

9eaf
是否是
$tag
值的子字符串。


$tag =~ /9eaf/

的缩写
$tag =~ m/9eaf/

其中

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


运算符,包括

m//
=~
,记录在 perlop 中。

正则表达式(例如

9eaf
)记录在 perlreperlretut中。


3
投票

检查标量

$tag
(可能是字符串)与正则表达式
/9eaf/
的匹配,后者仅检查字符串
"9eaf"
是否是
$tag
的子字符串。看看
perldoc perlretut

© www.soinside.com 2019 - 2024. All rights reserved.