gpt4 book ai didi

ruby - Ruby 的带编号的全局变量是什么

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:52 24 4
gpt4 key购买 nike

值 $1、$2、$'、$` 在 Ruby 中是什么意思?

最佳答案

它们是从最近的模式匹配中捕获的(就像在 Perl 中一样;Ruby 最初从 Perl 中提取了很多语法,尽管现在已经基本克服了:)。 $1 , $2等引用正则表达式中带括号的捕获:给定 /a(.)b(.)c/ , $1将是 a 之间的字符和 b$2 b 之间的字符和 c . $`$'分别表示匹配整个正则表达式(它本身在 $& 中)的字符串之前和之后的字符串。

这些实际上有一定的意义,即使只是在历史上;你可以在 perldoc perlvar 中找到它,它通常可以很好地记录预期的助记符和 Perl 变量的历史,并且大部分仍然适用于 Ruby 中的全局变量。带编号的捕获是捕获反向引用正则表达式语法( \1\2 等)的替代品; Perl 在 3.x 版本的某处从前者切换到后者,因为在正则表达式之外使用反向引用语法会使解析变得过于复杂。 (到 Perl 5 推出时,解析器已被充分重写,语法再次可用,并迅速重新用于引用/“指针”。Ruby 选择使用名称引号 :,这更接近于Lisp 和 Smalltalk 风格;由于 Ruby 最初是作为具有 Smalltalk 风格 OO 的类似 Perl 的,这在语言上更有意义。)这同样适用于 $& , 在历史正则表达式语法中就是 & (但是你不能在替换的替换部分之外使用它,所以它变成了一个变量 $&)。 $`$'都是来自匹配字符串的“可爱”:“反引号”和“正向引号”。

关于ruby - Ruby 的带编号的全局变量是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com