如何使用正则表达式获取[0]的最后一次出现?

问题描述:

我试图得到最后一次发生的情况。如何使用正则表达式获取[0]的最后一次出现?

obj.foo[0].bar[0].name 

我试试这个代码,但只是得到了第一[0],如果我把$在刚刚结束不起作用。

\[(\d+)\](?:(?!\[\d+\])) 

你必须断言,另一个同组不能在比赛后某处后,不仅马上。看到这个修改:

\[(\d+)\](?!.*?\[\d+\]) 
      ^^^ 

或者你也可以切换到一个回溯的方法:

.*\[(\d+)\] 

这是第一个正则表达式一个regex demo,并here是一个用于其他。

+1

我喜欢第二个方法加上 – 2014-09-21 04:26:06

+0

我也是,第一种方法会带来额外的时间声称,同组不存在多次,这部分不能被优化掉。另一方面,回溯可以更快地完成工作,特别是如果比赛已经回来了。 – Unihedron 2014-09-21 04:26:59

+0

非常感谢!这个对我有用! ...我正在使用替换! – 2014-09-21 04:32:10

根据,如果你想在括号包含,你可以使用以下命令:

var r = s.match(/\[\d+\]/g)[1] 

如果你不想让你可以从组索引切片他们的分隔符。

var r = s.match(/\[\d+\]/g)[1].slice(1,-1) 
+0

我想这个方法不需要捕获组。 – Unihedron 2014-09-21 05:45:04