您好我正在尝试找到一个可以捕获网址中的条款的正则表达式。
例如,给定:
https://stackoverflow.com,它会捕获“stackoverflow”
给定https://stackoverflow.com/questions/ask,它会捕获“stackoverflow”,“questions”,“ask”以及域名后斜杠字符之间的任何潜在术语。
到目前为止,我设法找到以下正则表达式,但它无法重复捕捉群组
https?:\/\/(?:www\.)?([\da-z-]*)(?:[\.a-z]*)(?:\/([\da-z]*)\/?)+
你们有什么方法可以解决这个问题吗?那会很棒。
答案 0 :(得分:1)
试试这个:
(?:(\/))\K(\w+)
在notepad ++中测试
答案 1 :(得分:0)
您可以尝试使用两个单独的正则表达式 - 一个用于主机名部分,另一个用于路径部分中的术语。然后将它们与交替构造结合起来进行全局搜索:
https?:\/\/(?:\w+\.)*(\w+)\.\w+ # this would capture hostname "term"
|
\/(\w+) # this would capture path "terms"
(注意:需要/x
修饰符。)
答案 2 :(得分:0)
谢谢我设法重新安排它,以便与" www"
一起使用(?:\/(?:www\.)?)\K([\w\d]+)
答案 3 :(得分:0)
我测试了Michal M的答案似乎没有得到" www。"所以我更新了它
/(?:\/(?:w{3}\.)?)\K([\w]+)/i
编辑:只要匹配" www。"我把它放在一个非捕获组中,因此它不会被捕获。顺便说一下,我还放了不区分大小写的修饰符,所以" WWW。"也没关系。