URL 正则表达式组捕获
URL regex group catching
你好,我正在尝试找到一个正则表达式来捕捉 url 中的术语。
例如,给定:
https://whosebug.com,它会捕获 "Whosebug"
给定 https://whosebug.com/questions/ask,它会捕获 "Whosebug"、"questions"、"ask" 以及域名后斜杠字符之间的任何潜在术语。
到目前为止,我设法找到了以下正则表达式,但它不能重复捕获组
https?:\/\/(?:www\.)?([\da-z-]*)(?:[\.a-z]*)(?:\/([\da-z]*)\/?)+
你们有什么办法可以解决这个问题吗??那太好了。
试试这个:
(?:(\/))\K(\w+)
在记事本++中测试
您可以尝试使用两个单独的正则表达式 -- 一个用于主机名部分,另一个用于路径部分中的术语。然后结合alternation construction做全局搜索:
https?:\/\/(?:\w+\.)*(\w+)\.\w+ # this would capture hostname "term"
|
\/(\w+) # this would capture path "terms"
(注意:需要 /x
修饰符。)
谢谢,我设法重新安排它以使其与 "www"
一起使用
(?:\/(?:www\.)?)\K([\w\d]+)
我测试了 Michal M 的答案似乎没有得到 "www." 所以我更新了它
/(?:\/(?:w{3}\.)?)\K([\w]+)/i
编辑:只要匹配 "www." 不重要,我就把它放在一个非捕获组中,这样它就不会被捕获。顺便说一句,我还放置了不区分大小写的修饰符,所以 "WWW." 也可以。
你好,我正在尝试找到一个正则表达式来捕捉 url 中的术语。
例如,给定:
https://whosebug.com,它会捕获 "Whosebug"
给定 https://whosebug.com/questions/ask,它会捕获 "Whosebug"、"questions"、"ask" 以及域名后斜杠字符之间的任何潜在术语。
到目前为止,我设法找到了以下正则表达式,但它不能重复捕获组
https?:\/\/(?:www\.)?([\da-z-]*)(?:[\.a-z]*)(?:\/([\da-z]*)\/?)+
你们有什么办法可以解决这个问题吗??那太好了。
试试这个:
(?:(\/))\K(\w+)
在记事本++中测试
您可以尝试使用两个单独的正则表达式 -- 一个用于主机名部分,另一个用于路径部分中的术语。然后结合alternation construction做全局搜索:
https?:\/\/(?:\w+\.)*(\w+)\.\w+ # this would capture hostname "term"
|
\/(\w+) # this would capture path "terms"
(注意:需要 /x
修饰符。)
谢谢,我设法重新安排它以使其与 "www"
一起使用(?:\/(?:www\.)?)\K([\w\d]+)
我测试了 Michal M 的答案似乎没有得到 "www." 所以我更新了它
/(?:\/(?:w{3}\.)?)\K([\w]+)/i
编辑:只要匹配 "www." 不重要,我就把它放在一个非捕获组中,这样它就不会被捕获。顺便说一句,我还放置了不区分大小写的修饰符,所以 "WWW." 也可以。