Skip to main content
 首页 » 编程设计

regex之Perl中正则表达式中的&号有什么用

2024年11月24日39itcoder

伙计们,我在 Perl 中有这个我不明白的正则表达式。

s/\w+$/($`!)$&/; 

原来的字符串是
"huge dinosaur" 

执行该正则表达式后,字符串现在是:
"huge (huge !)dinosaur" 

我很不明白这是怎么发生的。我不明白&符号在那里做什么。我理解 $`,但为什么它在那里,据我所知 $` 在匹配之前取值,我认为没什么,因为在上面的正则表达式之前没有匹配表达式。

如果有人可以将我链接到有关 Perl 正则表达式的一些非常有用的教程,我将不胜感激。

谢谢

编辑:我现在明白 & 符号的含义了,它保存了匹配,$` 保存了匹配前的值,现在我又不明白的是这整个部分:
($`!)$& 

这部分是怎么变成的
(huge !) 

请您参考如下方法:

你说得对,$`是一个特殊变量,它保存之前的内容
比赛。 $&是相似的,但保留匹配的内容和 $'持有什么是
比赛结束后。

"huge dinosaur" , /\w+$/匹配 dinosaur .所以变量内容
是:

$` => "huge " 
$& => "dinosaur" 
$' => "" 

注意匹配的是 dinosaur .然后它取代了 dinosaur带有开头括号的字符串部分, "huge " , 感叹号,
关闭括号,最后 dinosaur (匹配的是什么)。

查看 Perl 文档 perlvarperlre .