通过regex从URL路径中提取数据

时间:2017-07-17 15:47:03

标签: regex

我正在尝试从URL路径中提取数据,如下所示:

/ 12345678901234567890123456789012/1230345035 /维布勒/摆动/

使用此正则表达式,我可以使用此正则表达式提取为3组:

\/([^\/]*)\/([^\/]*)(\/wibble\/wobble)

这给了我:

group 1 = 12345678901234567890123456789012  
group 2 = /1230345035  
group 3 = /wibble/wobble  

然而,这并不是我所需要的 - 我试图让第2组中提取的数据也在第3组中,所以像这样:

group 1 = 12345678901234567890123456789012  
group 2 = /1230345035  
group 3 = /1230345035/wibble/wobble 

但我担心我正在努力使用正则表达式来提取这样的数据。

谢谢

1 个答案:

答案 0 :(得分:1)

首先,你提供的正则表达式不应该给你起始路径分隔符。因为您没有捕获分隔符,所以您应该看到如下内容:

group 1 = 12345678901234567890123456789012  
group 2 = 1230345035
group 3 = wibble/wobble

将最后三个元素组合到您所谓的group 2中更容易一些,然后使用复合捕获组将最后三个元素的第一部分捕获到group 3,如下所示:

\/([^\/]*)\/(([^\/]*)\/wibble\/wobble)

\/               # opening slash
([^\/]*)         # anything that is not a slash, repeated 0+ times, as group 1
\/               # separating slash
(                # begin group 2
([^\/]*)         # anything that is not a slash, repeated 0+ times, as group 3
\/wibble\/wobble # literal text to match
)                # end group 2

这应该给你以下匹配:

group 1 = 12345678901234567890123456789012  
group 2 = 1230345035/wibble/wobble
group 3 = 1230345035