我需要一个正则表达式来捕获给定的 URL SLD。
例子:
jack.bop.com -> bop
bop.com -> bop
bop.de -> bop
bop.co.uk -> bop
bop.com.br -> bop
Run Code Online (Sandbox Code Playgroud)
所有波普:)。因此,此正则表达式需要忽略 ccTLD、gTLD和ccSLD。后者是困难的部分,因为我想让正则表达式尽可能不复杂。
第一个任务是删除 ccTLD,然后删除 gTLD,然后检查 ccSLD 并删除它们(如果存在)。
任何帮助深表感谢 :)
--
如果有帮助,ccTLD 会通过以下方式进行匹配:
\.([a-z]{2})$
Run Code Online (Sandbox Code Playgroud)
gTLD 的匹配方式是:
\.([a-z]{3-6})$
Run Code Online (Sandbox Code Playgroud)
幸运的是,这是两种互斥的模式。
从技术上讲,“.co.uk”是“bop.co.uk”中的二级域名。您似乎要求的是向公共注册开放的域名的最高级别部分,并且您想要剥离注册商的域名。
\nRFC 6265 \xc2\xa75.3调用您不想要“公共后缀”的后缀:
\n\n\n“公共后缀”是由公共注册表控制的域,例如“com”、“co.uk”和“pvt.k12.wy.us”。
\n
Mozilla 维护着一份所有已知公共后缀的列表。
\n要创建正则表达式,您必须枚举所有公共后缀。您应该对它们进行排序,使得作为其他元素后缀的元素稍后出现。一个简单的方法是按长度降序排序。看起来颠倒 Mozilla 的列表也足够了。
\n之后,正则表达式非常简单:
\n(.+\\.)?([^.]+)\\.(?:<suffixes>)$\nRun Code Online (Sandbox Code Playgroud)\n<suffixes>分隔的后缀列表在哪里|。它的一部分看起来像这样:
gov\\.uk|ac\\.uk|co\\.uk|com|org|net|us|uk\nRun Code Online (Sandbox Code Playgroud)\n有一些方法可以通过折叠通用后缀来缩短这个时间,尽管这会使正则表达式(以及计算它的过程)变得更加复杂。例如:
\n(?:gov\\.|ac\\.|co\\.|)uk|com|org|net|us\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |