正则表达式:重复匹配

时间:2012-07-10 08:11:54

标签: php regex preg-match

我正在尝试创建一个正则表达式,它可以包含这三个元素中的一些0 ... X次:

/ CAT1 / VAR1

/ CAT2 / VAR2

/ CAT3 / VAR3

这是我到目前为止所得到的:

((cat1|cat2|cat3)/(?P<var>\w+))*

在此示例字符串中,它仅匹配第一个匹配项: http://url.dev/cat1/aaaaa / cat1 / bbbbb / cat2 / ccccc

在这个样本中还有两次出现cat1,我想知道是否有可能收获这两个值。

我想要匹配的几个样本:

http://url.dev/cat1/aaaaa/cat1/bbbbb/cat2/ccccc/cat3/ddddd/cat3/eeeee

http://url.dev/cat1/aaaaa

http://url.dev/cat2/aaaaa/cat3/bbbbb

1 个答案:

答案 0 :(得分:0)

你可以使用

吗?
(cat\d/(?P<var\d>\w+))*

它将匹配所有cat / var出现次数 [EDIT]

所以:

/(cat\d\/\w+)/g