在这里使用&符号意味着pre_match?

时间:2013-12-27 16:52:24

标签: ruby regex

&符号在下面的代码中做了什么?

s.reverse.gsub( /\d{3}(?=\d)/, '\&,' ).reverse

在尝试查找这些内容之后,人们会认为这是一个特殊的变量,意思是post_match或pre_match,但是文档没有说&符号 - 只有美元符号后跟或者前面有刻度线。

1 个答案:

答案 0 :(得分:1)

\&定义了正则表达式匹配的整个字符串。看到这个简化的例子:

s = "p1:1 1:1";
print s.gsub( /[a-z]/, '[\&],' ) ## only p is matched

输出:[p],1:1 1:1

同样,\1定义了与正则表达式匹配的第一个组。 (类似于\ 2,\ 3 ......等等)。一个例子:

s = "p1:1 1:1";
print s.gsub( /(\d:\d)/, '[\1]' )

输出:p[1:1] [1:1]