选择正则表达式的第n个匹配

时间:2011-11-02 14:11:12

标签: ruby regex

我有一个格式为0 0:00:00:0000的字符串。我想捕获:之前的0000,然后将其更改为另一个字符。如何只选择那个:?我想知道是否有一种方法可以选择其他正则表达式匹配之前的字符(因为有一种方法可以选择字符,然后是(?=pattern)的regexpr匹配或计算匹配的:的方法)并且只选择让我们说第4场比赛。我正在使用ruby 1.8.7实现正则表达式。我该怎么做?

3 个答案:

答案 0 :(得分:3)

您可以使用这样的前瞻断言:

/:(?=[^:]*$)/

答案 1 :(得分:2)

您可以选择最后一场比赛

ruby-1.9.2-p290 :003 > "0:00:00:0000".gsub(/(:)([^:]+)$/, "x\\2")
 => "0:00:00x0000" 

答案 2 :(得分:2)

另一种方法是使用String#[]=方法:

str = "0:00:00:0000"
str[/(:)[^:]+$/, 1] = '*'
str                                       # => "0:00:00*0000"