我有以下情况:-
....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