Talvez tente algo assim?
((?:edu|org)?\.[a-z]+)$
Eu tenho algo como: -
....wasasa.org.pk
wawwwsasa.msn.com
....ttrt .....ddd.dd www.edu.pk
.ru
Eu só quero escolher seguir
org.pk
.com
edu.pk
A regex possível que escrevi é
[a-z]+.(.*)(?=\s+)
O problema é que é só pegar na parte dd.
Com o regex mais recente, vejo os seguintes problemas: -
....wasasa.org.pk fgf wawwwsasa.msn.com fgf
....ttrt .....ddd.dd www.iffn.pk fgf
www.ru ff www.ru.com fgfgf
.ru fgf
Ele deixará de corresponder a qualquer coisa depois do espaço, por exemplo, www.ru.com fgfgs. O regex deve funcionar com espaço e até sem espaço.
Se eu entendi a pergunta, o awk pode fazer isso usando:
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":"."}}'
Um exemplo de uso:
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":"."}}'
Saída:
com
co.uk
Tags regex