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 修饰符。)

演示:https://regex101.com/r/nA8jT9/2

谢谢,我设法重新安排它以使其与 "www"

一起使用
(?:\/(?:www\.)?)\K([\w\d]+)

我测试了 Michal M 的答案似乎没有得到 "www." 所以我更新了它

/(?:\/(?:w{3}\.)?)\K([\w]+)/i

编辑:只要匹配 "www." 不重要,我就把它放在一个非捕获组中,这样它就不会被捕获。顺便说一句,我还放置了不区分大小写的修饰符,所以 "WWW." 也可以。