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

时间:2011-04-01 15:46:20

标签: ruby regex

我在ruby代码上偶然发现了这个问题。 我知道\ d {4})\ /(\ d \ d)\ /(\ d \ d)\ /(。*)/表示什么是\ 1- \ 2- \ 3- \ 4是什么意思?

6 个答案:

答案 0 :(得分:3)

\1-\2-\3-\4对正则表达式本身内捕获的数据back references

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

请参阅此处查看Ruby implementation

答案 1 :(得分:3)

这些都是反向引用。 \ 1表示第一组括号()的结果,即(\d\d),\ 2表示第二组,依此类推。

答案 2 :(得分:1)

1234/12/12/XX转换为1234-12-12-XX

答案 3 :(得分:0)

我认为\ 1,\ 2等只是引用匹配的组

即。 \ 1 ==(\ d {4})

答案 4 :(得分:0)

他们引用匹配的组(替换反向引用)

有关详细信息,请参阅http://www.regular-expressions.info/ruby.html

答案 5 :(得分:-1)

您可以通过将正则表达式放置在括号内来捕获正则表达式的部分模式,然后在替换部分上根据它们出现的顺序使用\ 1,\ 2,\ 3,...引用它们。

在你的例子中,1将是前4位,\ 2将是第二位,\ 3将是以下两位,\ 4将是其余两位。

所以“20100410milk”将被“2010-04-10-milk”取代,因为\ 1将是2010年,\ 2 04,\ 3 10和\ 4牛奶。