伙计们,我在 Perl 中有这个我不明白的正则表达式。
s/\w+$/($`!)$&/;
原来的字符串是
"huge dinosaur"
执行该正则表达式后,字符串现在是:
"huge (huge !)dinosaur"
我很不明白这是怎么发生的。我不明白&符号在那里做什么。我理解 $`,但为什么它在那里,据我所知 $` 在匹配之前取值,我认为没什么,因为在上面的正则表达式之前没有匹配表达式。
如果有人可以将我链接到有关 Perl 正则表达式的一些非常有用的教程,我将不胜感激。
谢谢
编辑:我现在明白 & 符号的含义了,它保存了匹配,$` 保存了匹配前的值,现在我又不明白的是这整个部分:
($`!)$&
这部分是怎么变成的
(huge !)
请您参考如下方法:
你说得对,$`是一个特殊变量,它保存之前的内容
比赛。 $&是相似的,但保留匹配的内容和 $'持有什么是
比赛结束后。
在 "huge dinosaur" , /\w+$/匹配 dinosaur .所以变量内容
是:
$` => "huge "
$& => "dinosaur"
$' => ""
注意匹配的是
dinosaur .然后它取代了
dinosaur带有开头括号的字符串部分,
"huge " , 感叹号,
关闭括号,最后
dinosaur (匹配的是什么)。
查看 Perl 文档
perlvar和
perlre .


