在正则表达式中维护“变量”?

时间:2013-10-25 18:54:02

标签: ruby regex

有没有办法使用正则表达式来匹配和替换“变量字符串”,如...

foo_1_a => bar_1_b
foo_2_a => bar_2_b
foo_3_a => bar_3_b

...

使用一些带有变量“var”的表达式,例如

“将foo_var => [0-9]_a替换为bar_var_b

具体来说,我正在尝试使用Ruby从命令行中获取一个正则表达式/替换并执行所有这些替换。谢谢。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您正在寻找后退参考替换字符串。这通常由\1$1完成。数字1是先前匹配的组的订单。

因此foo_2_afoo_(\d+)_a匹配。这里括号创建一个组。它是第一组。所以用bar_\1_b替换它。 \1将包含2

有关Back Reference的更多信息。

答案 1 :(得分:0)

我们走了。

result = "foo_1_a".match(/_([0..1])_/){ "bar_#{$1}_b" }
puts result # "bar_1_b"