como definir o regex para analisar apenas o TLD do nome de domínio?

0

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.

    
por asadz 15.08.2013 / 20:52

2 respostas

1

Talvez tente algo assim?

((?:edu|org)?\.[a-z]+)$
    
por 15.08.2013 / 21:05
0

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
    
por 15.08.2013 / 21:21

Tags