rua*_*akh 14
\z 只匹配字符串的最后一部分.
\Z也匹配字符串的最后一行,但如果字符串以换行符结尾,则\Z也会在换行符之前立即匹配.
所以,例如,这五个是真的:
'foo' =~ m/foo\z/
'foo' =~ m/foo\Z/
"foo\n" =~ m/foo\Z/
"foo\n" =~ m/foo\n\z/
"foo\n" =~ m/foo\n\Z/
Run Code Online (Sandbox Code Playgroud)
而这一个是假的:
"foo\n" =~ m/foo\z/
Run Code Online (Sandbox Code Playgroud)
它们的不同之处$在于它们不受/m"多行"标志的影响,该标志允许$在任何行的末尾匹配.
\a表示警报(铃)字符; 它在正则表达式中没有任何额外的特殊含义.
\A仅匹配字符串的开头.喜欢\z和\Z不同^,它不受/m"多线"标志的影响.
所有这些都记录在perlrePerl正则表达式手册页中:http://perldoc.perl.org/perlre.html.
\A 匹配位置 0 处的零个字符。\z 匹配字符串末尾的零个字符。\Z 匹配字符串末尾和尾随换行处的零个字符。^没有/m与 相同\A。^with/m在位置 0 和换行后匹配零个字符。$没有/m与 相同\Z。$with/m匹配字符串末尾和换行符处的零个字符。\a 匹配 BEL/BELL 字符。
\x07在基于 ASCII 的机器上。\x2F在基于 EBCDIC 的机器上。以下表示相关正则表达式模式将匹配的位置(?表示换行):
\A \A is not affected by /m
^ ^ without /m ? \A
^/m ^/m ^/m ^ with /m ? \A|(?<=\n)
| | |
0123456789012
| | |
v v v
abc?def?ghi?
^ ^ ^^
| | ||
0123456789012
| | ||___
| | | |
$/m $/m $/m $/m $ with /m ? \z|(?=\n)
$ $ $ without /m ? \z|(?=\n\z)
\Z \Z \Z is not affected by /m ? \z|(?=\n\z)
\z \z is not affected by /m
Run Code Online (Sandbox Code Playgroud)
这在perlre 中有记录。