Ruby 什么是gsub(/(\d{4})\/(\d\d)\/(\d\d)\/(.*)/,';\1-\2-\3-\4';)的意思?

Ruby 什么是gsub(/(\d{4})\/(\d\d)\/(\d\d)\/(.*)/,';\1-\2-\3-\4';)的意思?,ruby,regex,Ruby,Regex,我在ruby代码中偶然发现了这一点。 我知道\d{4}\/(\d\d)\/(\d\d)\/(.*)/的意思,但\1-\2-\3-\4的意思是什么?我认为\1、\2等只是指匹配的组 i、 e.\1==(\d{4})将\1-\2-\3-\4添加到正则表达式本身内捕获的数据 因此,\1包含在第一组中捕获的数据,\2是在第二组中捕获的数据,\3是在第三组中捕获的数据,依此类推 请参见此处,了解这些是反向参考\1表示第一组括号的结果(),即(\d\d),\2表示第二组,依此类推。它们指回匹配的组(取代基反

我在ruby代码中偶然发现了这一点。
我知道\d{4}\/(\d\d)\/(\d\d)\/(.*)/的意思,但\1-\2-\3-\4的意思是什么?

我认为\1、\2等只是指匹配的组


i、 e.\1==(\d{4})

\1-\2-\3-\4
添加到正则表达式本身内捕获的数据

因此,
\1
包含在第一组中捕获的数据,
\2
是在第二组中捕获的数据,
\3
是在第三组中捕获的数据,依此类推


请参见此处,了解这些是反向参考\1表示第一组括号的结果
()
,即
(\d\d)
,\2表示第二组,依此类推。

它们指回匹配的组(取代基反引用)


有关详细信息,请参见

1234/12/12/XX
转换为
1234-12-12-XX
您可以捕获正则表达式模式的部分,方法是将它们放在括号内,然后在替换部分用\1、\2、\3、,。。。根据它们出现的顺序

在您的示例中,\1将是前4位数字,\2将是后两位数字,\3将是后两位数字,\4将是其余数字


因此,“20100410milk”将被“2010-04-10-milk”取代,因为\1将是2010、\2 04、\3 10和\4 milk。

gsub(/(\d{4})\/(\d\d)\/(\d\d)\/(.*)/,“\1-\2-\3-\4')实际上做了什么<代码>1234/12/12/XX只是犹他州的一个样本,好吗。你最初的回答没有什么意义。有人是反斜杠的忠实粉丝。
%r[(\d{4})/(\d\d)/(\d\d)/(.*)
而不是
/(\d{4})\/(\d\d\d)\/(\d\d)\/(.*)/
?@Jörg:作者可能不知道
%r
regex文本。我对ruby不太熟悉,所以我不知道你们在说什么,但它似乎是%r[(\d{4}/\d)/(。)对我来说也更干净。你错过了输入中的斜杠。