具有多个可选分组的正则表达式

时间:2012-12-02 17:53:40

标签: c# regex

我们有一个供应商在不使用查询字符串的情况下触发HTTP帖子。他们有效地以下列格式发布到我们的申请中:

www.mydomain.com/ourHandler/GroupId/ProductId/ItemId/CustomerId/ 

ourHandler(或跟踪器)和GroupId是唯一保证的值。其余的是完全可选的。最后的斜线也可能丢失。我被告知我需要满足“每秒数百次点击”。

所以我认为最好的选择可能是使用正则表达式(我吮吸)而不是string.split。

这是我得到的,但显然它不够好:

^(?<tracker>.\w*)?/(?<GroupId>\w*)?/(?<ProductId>\w)?/(?<ItemId>\w*)?(/)?(?<CustomerId>\w*)?

1 个答案:

答案 0 :(得分:5)

为什么需要正则表达式? Uri类有一个Segments属性

var uri = new Uri("http://www.mydomain.com/ourHandler/GroupId/ProductId/ItemId/CustomerId/");
var segments = uri.Segments;
//ourHandler/ <-- segments[1] 
//GroupId/ <-- segments[2]