我有以下内容:
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'特定比赛
答案 0 :(得分:0)
非C#基础解决方案
如果xx
是实际字符串中的数字,请使用
\d+(?=\/$)
否则,请使用
[^-\/]*(?=\/?$)
请注意,在JS中,没有后视,因此,如果您必须检查/ sub-dept /是否在您需要的子字符串前面,您将不得不依赖捕获组机制:
\/sub-dept\/[^\/]*-([^-\/]*)\/?
请参阅another demo
原始回答
这是你可以使用的正则表达式
(?<=/sub-dept/[^/]*-)[^/-]*(?=/$)
请参阅demo
正则表达式匹配包含除/
或-
以外的0个或更多字符的子字符串...
(?<=/sub-dept/[^/]*-)
前面有/sub-dept/
后跟一个或多个/
以外的字符,然后是连字符(?=/$)
- 后面跟着一个/
符号,位于字符串的末尾。或者,有一种非正则表达方式:将字符串拆分为/
,得到最后一部分并按-
拆分。这是一个例子(没有错误/空检查为了演示):
var result = text.Trim('/').Split('/').LastOrDefault().Split('-').LastOrDefault();