正则表达式匹配子域(如果存在)和域(在nginx中)

时间:2014-12-03 15:30:05

标签: regex nginx

我需要一个正则表达式来提取子域(如果存在)和带有TLD的域。 这是一个nginx配置,所以请严格使用正则表达式。

示例:

www.a0.example.com 
www.example.com
www.example.org
  • 第1行示例应与a0example.com匹配
  • 示例行2应该只与example.com匹配,因为子域名是 缺席
  • 示例第3行应仅与example.org匹配到一个组中 因为子域也不存在

组号应该是一致的,因此$0将始终返回子域,如果不存在则为空,并且$1将始终返回域。 www将永远存在。

任何可以挥动魔杖的正则表达式向导?

1 个答案:

答案 0 :(得分: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\.([^\.]+\.)?([^\.]+\.[^\.]+)$/