Etki alanı adının yalnızca TLD'sini ayrıştırmak için regex nasıl tanımlanır?


0

Bir şeyim var: -

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

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

Sadece takip etmek istiyorum

org.pk
.com
edu.pk

Yazdığım olası regex

[A-z] +. (. *) (? = \ S *)

Sorun şu ki, sadece dd bölümünü seçmek.

En son regex ile aşağıdaki sorunları görmek: -

.... 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 gibi boşluktan sonra herhangi bir şeyi eşleştirmeyi durduracaktır. Regex boşlukla ve hatta boşluksuz çalışmalıdır.

Yanıtlar:


1

Belki böyle bir şey denemek?

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

teşekkürler rolünü açıklayabilir misiniz?
asadz

@asadz Evet, (?: ...) yakalamayan bir gruptur. Bu ... bir gruba girmeyecek ^^;
Jerry

.Pk 'den sonra boşluk olan .... wasasa.org.pk fgf eklediğimde ufak bir sorun var, benim için fgf ile eşleşmeye başlayacak, eşleşmeden önce durmasını istemiyorum.
asadz

@asadz Ben parantez hatası yaptım ayy! Güncellenmiş regex'in çalışıp çalışmadığını görmek için deneyin
Jerry

lütfen güncel sorumu görün.
asadz

0

Eğer soruyu anladıysam awk bunu kullanarak yapabilir:

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":"."}}'

Örnek kullanım:

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":"."}}'

Çıktı:

com
co.uk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.