【发布时间】:2024-01-06 05:44:01
【问题描述】:
我正在尝试将域拆分为不同的类别(子域、域、TLD)并且遇到了麻烦..
我想不出一种方法来匹配任意数量的子域并且不超过我的域或 TLD 数学。我正在使用 PCRE 正则表达式。
当前正则表达式:
\s(?:(?<subdomain>[a-z0-9\-]*){0,1}\.){0,3}(?<domain>(?>([a-z0-9\-]+)))\.(?<tld>[a-z\.]{2,6})\s
数据集:
apple.orange.banana.clevername.co.uk
strawberry.apple.orange.banana.clevername.co.uk
tangerine.com.au
simple.com
注意:域前后都有空格,它们总是小写。
此数据如何匹配的示例:
apple.orange.banana.clevername.co.uk
子域:apple.orange.banana
域名:谷歌
*域名:co.uk
如果我向子域(strawberry.apple.orange.banana.clevername.co.uk)添加另一个水果,匹配将失败。如果我将子域正则表达式的 {0,3} 修改为更高的数量或无限数量的匹配,它会变得过于贪婪,并且我不再得到域/tld 的正确匹配。示例:
修改正则表达式:
\s(?:(?<subdomain>[a-z0-9\-]*){0,1}\.){0,5}(?<domain>(?>([a-z0-9\-]+)))\.(?<tld>[a-z\.]{2,6})\s
与新的正则表达式匹配:
strawberry.apple.orange.banana.clevername.co.uk
子域:strawberry.apple.orange.banana.clevername
域名:
*域名:co.uk
我确信正则表达式也不是最有效的,因此我们将不胜感激任何帮助或建议。谢谢!
【问题讨论】:
标签: regex pcre splunk regex-group capture-group