正则表达式排除捕获C#上的部分字符串

时间:2013-11-21 20:32:53

标签: c# regex url-rewriting

我正在尝试重写网址但无法捕获两个方案的正确操作。第一种是如果操作是“scheduletable”,则只捕获“schedule”中的“action”,否则捕获整个“pools”。我的正则表达式会在“table

中包含“action
^/events/(?<action>.*)(?table)?/(?<eventid>\d*).*$

原始网址

/events/scheduletable/39?layout=time&type=all
/events/pools/39

3 个答案:

答案 0 :(得分:2)

使用:

^/events/(?<action>.*?)(?:table)?/(?<eventid>\d*).*$

在替换中使用$1$2 - 或者甚至是您的群组名称。

Working on RegExr

答案 1 :(得分:0)

你错了地方?(?table)没有意义,而* action上的.*?需要非贪婪(.*而不是^/events/(?<action>.*?)(table)?/(?<eventid>\d*).*$ )。试试这个;

{{1}}

答案 2 :(得分:0)

考虑以下Regex ......

(?<=events/).*?(?=(table|/))

祝你好运!