如何定义正则表达式来解析域名的 TLD?

如何定义正则表达式来解析域名的 TLD?

我有以下情况:-

....wasasa.org.pk
wawwwsasa.msn.com

....ttrt .....ddd.dd www.edu.pk
.ru

我只想选择以下

org.pk
.com
edu.pk

我写的可能的正则表达式是

[az]+.(.*)(?=\s+)

问题在于它仅挑选 dd 部分。

使用最新的正则表达式我发现以下问题:-

....wasasa.org.pk fgf wawwwsasa.msn.com fgf

....ttrt .....ddd.dd www.iffn.pk fgf

www.ru ff www.ru.com fgfgf

.ru fgf

它将停止匹配空格后的任何内容,例如 www.ru.com fgfgs。正则表达式应该适用于空格,甚至适用于没有空格的情况。

答案1

也许可以尝试这样的事情?

((?:edu|org)?\.[a-z]+)$

答案2

如果我确实理解了这个问题,awk 可以使用以下方法完成:

awk '{split($0,uri,"/");c=split(uri[3],domain,".");
domain[1]=="www"?a=3:a=2; for (i=a;i<=c;i+=1){
printf("%s%s"),domain[i],i==c?"\n":"."}}'

使用示例:

printf "%s\n" 'https://google.com/search?q=google' 'https://www.google.co.uk/foo' | awk '{split($0,uri,"/");c=split(uri[3],domain,"."); domain[1]=="www"?a=3:a=2; for (i=a;i<=c;i+=1){ printf("%s%s"),domain[i],i==c?"\n":"."}}'

输出:

com
co.uk

相关内容