2014-12-03 63 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