部分url的正则表达式
本文关键字:正则表达式 url 部分 | 更新日期: 2023-09-27 18:09:50
我有以下内容:
https://www.example.com/my-suburl/sub-dept/xx-xxxx-xx-yyyyyy/
我试图找到'yyyyy'在url到目前为止,我有:
(.*)'/sub-dept'/(.*[^'/])'/([^'/]*)$
匹配:
https://www.example.com/my-suburl
和
xx-xxxx-xx-yyyyyy
然而,就像我说的,我需要'yyyyy'特定的匹配
非#的解决方案
如果xx
是实际字符串中的数字,则使用
'd+(?='/$)
否则,使用
[^-'/]*(?='/?$)
参见演示1和演示2
请注意,在JS中没有后视,因此,如果你必须检查/sub-dept/是否在你需要的子字符串前面,你将不得不依赖捕获组机制:
'/sub-dept'/[^'/]*-([^-'/]*)'/?
查看另一个演示
原始回答
这是一个正则表达式,你可以使用
(?<=/sub-dept/[^/]*-)[^/-]*(?=/$)
看到演示
regex匹配包含0个或多个字符的子字符串,而不是/
或-
,该子字符串为…
-
(?<=/sub-dept/[^/]*-)
前面有/sub-dept/
,后跟除/
以外的1个或多个字符,然后是连字符 -
(?=/$)
-在字符串的末尾后跟/
符号。
或者,有一种非正则表达式的方法:通过/
拆分字符串,获得最后一部分并通过-
拆分。下面是一个示例(为了演示,没有错误/null检查):
var result = text.Trim('/').Split('/').LastOrDefault().Split('-').LastOrDefault();