RegEx:我的表达式与嵌套组不匹配

时间:2010-10-08 18:33:23

标签: .net regex

以下正则表达式(url)模式与命名组不匹配:

^/(.+?)/(.+)?(_p(?<Page>\d+))?

我不知道为什么这在可选块中不起作用:

?()?

这种模式有什么问题?如何才能得到正确的结果?

1 个答案:

答案 0 :(得分:2)

第二组(.+)?贪婪。因此它将匹配整个File_p2。由于第3组是可选的,因此只会跳过它。

您可以将正则表达式更改为

^/([^/]+)/(.+?)(?:_p(?<Page>\d+))?$

或稍微更有效率

^/([^/]+)/([^_]+(?:_[^_]+)*?)(?:_p(?<Page>\d+))?$