用运算符进行正则表达式匹配。在scalar上下文中,=~ m//
在成功时返回true,而失败是返回false。
圆括号表示匹配组,匹配成功以后,匹配组被填入内置变量$1
、$2
、$3
……:
print $1; # "Hello"
print $2; # "world"
在列表上下文中,=~ m//
返回$1
、$2
……组成的列表。
my $string = "Good morning world";
$string =~ s/world/Vietnam/;
请注意$string
的内容发生了怎样的改变。你必须在=~ s///
运算符左边提供一个scalar变量,如果你提供了字面字符串,会返回一个错误。
/g
标志表示“全局匹配”(译者注:原文“group match”,应为“global match”更为确切)。
在scalar上下文中,每次=~ m//g
调用都会返回下一个匹配项,成功是返回true,而失败时返回false。然后你还是可以通过$1
等等来得到匹配的组。例如:
print join ", ", map { "'".$_."'" } @matches;
每次=~ s///g
调用会进行一次全局的查找/替换,并且返回匹配的次数。在这里,我们把所有元音字母用字母“r”替代。
/i
标志表示查找替换对于大小写不敏感。
/x
标志允许正则表达式中包含空白符(例如换行符)和注释。
"Hello world" =~ m/
(\w+) # one or more word characters
world # literal "world"
/x;
# returns true