在perl字符串匹配中($ ipAddrResult =〜/ Regex/gm)和($ ipAddrResult = ~m/Regex/g)之间是否存在差异?当我在线谷歌时,我会得到第二个的解释而不是第一个.我试图编辑的文件有第一个条件.
m不同地方的s意味着不同的东西.
我们先来看第二个例子.
m//是正则表达式匹配运算符.作为捷径,m可以省略,所以
$foo =~ m/$pattern/;
Run Code Online (Sandbox Code Playgroud)
与...完全相同
$foo =~ /$pattern/;
Run Code Online (Sandbox Code Playgroud)
唯一m需要的时间是你想要使用除/模式之外的分隔符.例如,你可以这样做
$foo =~ m!$pattern!;
Run Code Online (Sandbox Code Playgroud)
要么
$foo =~ m[$pattern];
Run Code Online (Sandbox Code Playgroud)
等等,但这些都需要在m那里.
在第一个例子中,m正则表达式之后是一个修饰符标志,它告诉正则表达式如何表现.perlre手册页中记录了正则表达式标志,可以这样说:
m - 将字符串视为多行.也就是说,改变"^"和"$"仅匹配字符串左端和右端的行的开头或结尾,以匹配字符串中的任何位置.
所以这:
$foo =~ /$pattern/m;
Run Code Online (Sandbox Code Playgroud)
与此相同:
$foo =~ m/$pattern/m;
Run Code Online (Sandbox Code Playgroud)
和这个一样:
$foo =~ m{$pattern}m;
Run Code Online (Sandbox Code Playgroud)
在表达中
/Regex/gm
Run Code Online (Sandbox Code Playgroud)
“ m”代表多行匹配。在表达式中:
m/Regex/g
Run Code Online (Sandbox Code Playgroud)
“ m”代表“匹配”,而不是替代,看起来像这样:
s/Regex/replacement/g
Run Code Online (Sandbox Code Playgroud)
因为默认情况下匹配(相对于替换),所以通常可以在表达式的开头省略“ m /”。换句话说,“ m / Regex / g”只是“ / Regex / g”的同义词。
是的,m/regex/g在语法上等同于 just /regex/g。也就是说,它/m根本不激活该标志。与哪个相比s/foo/bar/根本不一样s/foo/bar/s。我相信这个名字m代表“匹配”。
| 归档时间: |
|
| 查看次数: |
10314 次 |
| 最近记录: |