2014-12-03 55 views
-1

我需要一個正則表達式來提取子域(如果存在)和域名與TLD。 這是一個nginx配置,所以請嚴格regex是必要的。正則表達式匹配子域(如果存在)和域(在nginx中)

實例:

www.a0.example.com 
www.example.com 
www.example.org 
  • 實施例第1行應該匹配a0example.com成組
  • 實施例線路2應該只example.com匹配成一組,因爲該子域是 缺席
  • 實施例第3行應該只匹配example.org成組 ,因爲子域也不存在

組號應該一致,所以$0將永遠返回子域,如果它不存在則爲空,並且$1將始終返回域。 www將始終存在。

任何正則表達式嚮導都可以揮動他們的魔杖?

回答

2

這是一個測試正則表達式中

$ perl -lne '/^www\.([^\.]+\.)?([^\.]+\.[^\.]+)$/ and print "1=$1 2=$2"' file 
1=a0. 2=example.com 
1= 2=example.com 
1= 2=example.org 

正則表達式:

/^www\.([^\.]+\.)?([^\.]+\.[^\.]+)$/ 
+1

作品完美! – user1965476 2014-12-03 16:27:05