从主机名中提取AWS AZ

时间:2018-12-01 19:24:47

标签: python regex

我试图弄清楚如何使用Python从AWS主机名中提取可用区(AZ)。我知道如何提取主机名的开头或结尾,但不提取中间名。示例:

ec2-1-1-1-1.us-west-2.compute.amazonaws.com.
ec2-2-2-2-2.us-gov-west-1.compute.amazonaws.com.
ec2-3-3-3-3.ap-southeast-2.compute.amazonaws.com.

对于不熟悉AWS的用户,AZ是主机名“ us-west-2”,“ us-gov-west-1”,“ ap-southeast-2”的中间部分。格式在各个区域都是一致的。

先谢谢了。

1 个答案:

答案 0 :(得分:0)

您可以使用此简单的正则表达式来选择您想要的名称。

^[^.]+\.([^.]+)

要捕获AZ名称,您需要捕获第1组文本。

Demo

提取名称的Python代码,

import re
arr = ['ec2-1-1-1-1.us-west-2.compute.amazonaws.com.','ec2-2-2-2-2.us-gov-west-1.compute.amazonaws.com.','ec2-3-3-3-3.ap-southeast-2.compute.amazonaws.com.']
for s in arr:
 match = re.search(r'^[^.]+\.([^.]+)', s)
 print (s + ' --> ' + match.group(1))

这是输出,

ec2-1-1-1-1.us-west-2.compute.amazonaws.com. --> us-west-2
ec2-2-2-2-2.us-gov-west-1.compute.amazonaws.com. --> us-gov-west-1
ec2-3-3-3-3.ap-southeast-2.compute.amazonaws.com. --> ap-southeast-2