ruby regex:匹配URL重复出现的模式

时间:2013-05-09 00:58:20

标签: ruby regex

我希望能够使用Ruby 1.8.7匹配以下所有情况。

/pages/multiedit/16801,16809,16817,16825,16833
/pages/multiedit/16801,16809,16817
/pages/multiedit/16801
/pages/multiedit/1,3,5,7,8,9,10,46

我目前有:

\/pages\/multiedit\/\d*

这与第一组数字相匹配。例如:

"/pages/multiedit/16801,16809,16817,16825,16833"[/\/pages\/multiedit\/\d*/]
# => "/pages/multiedit/16801"

例如,请参阅http://rubular.com/r/ruFPx5yIAF

感谢你的帮助,正则表达的众神。

2 个答案:

答案 0 :(得分:2)

\/pages\/multiedit\/\d+(?:,\d+)*

示例:http://rubular.com/r/0nhpgki6Gy

编辑:更新为不捕获任何内容......虽然性能损失可以忽略不计。 (谢谢田人)

目前接受的答案
\/pages\/multiedit\/[\d,]+

可能不是一个好主意,因为它也会匹配以下字符串

.../pages/multiedit/,,,
.../pages/multiedit/,1,

我的回答要求第一个逗号前至少有一个数字,逗号之间至少有一个数字,并且必须以数字结尾。

答案 1 :(得分:1)

我会用:

/\/pages\/multiedit\/[\d,]+/

以下是http://rubular.com/r/h7VLZS1W1q

模式的演示

[\d,]+表示“找到一个或多个数字或逗号”

\d*不起作用的原因是它意味着“找到零个或多个数字”。模式搜索一旦进入逗号就会停止。您必须告诉引擎可以找到数字逗号。