正常表达部分网址

时间:2015-08-26 11:34:23

标签: c# regex iis

我有以下内容:

https://www.example.com/my-suburl/sub-dept/xx-xxxx-xx-yyyyyy/

到目前为止,我试图在网址中找到'yyyyy':

(.*)\/sub-dept\/(.*[^\/])\/([^\/]*)$

匹配于:

https://www.example.com/my-suburl

xx-xxxx-xx-yyyyyy

但就像我说我需要'yyyyy'特定比赛

1 个答案:

答案 0 :(得分:0)

非C#基础解决方案

如果xx是实际字符串中的数字,请使用

\d+(?=\/$)

否则,请使用

[^-\/]*(?=\/?$)

请参阅Demo 1Demo 2

请注意,在JS中,没有后视,因此,如果您必须检查/ sub-dept /是否在您需要的子字符串前面,您将不得不依赖捕获组机制:

\/sub-dept\/[^\/]*-([^-\/]*)\/?

请参阅another demo

原始回答

这是你可以使用的正则表达式

(?<=/sub-dept/[^/]*-)[^/-]*(?=/$)

请参阅demo

正则表达式匹配包含除/-以外的0个或更多字符的子字符串...

  • (?<=/sub-dept/[^/]*-)前面有/sub-dept/后跟一个或多个/以外的字符,然后是连字符
  • (?=/$) - 后面跟着一个/符号,位于字符串的末尾。

或者,有一种非正则表达方式:将字符串拆分为/,得到最后一部分并按-拆分。这是一个例子(没有错误/空检查为了演示):

var result = text.Trim('/').Split('/').LastOrDefault().Split('-').LastOrDefault();