正则表达式匹配主机名 - 不同的长度

时间:2012-10-02 11:19:42

标签: regex

我正在寻找一个正则表达式,仅从hostname中提供FQDN

E.g。我想要“host”中的“host.company.com”。

到目前为止我已经想出了这个:

^(.{4}).* 

但是,由于存储在CMDB中的某些设备没有完整的FQDN,因此它也可以捕获没有点的设备。

我现在正在努力的是主机名的长度不同。

2 个答案:

答案 0 :(得分:1)

因为我们在第一个时期之前尝试获取所有内容:

^(.*?)\.

问号表示尽可能少地匹配,我们逃避了。让它代表一个实际的点。

与host.company.com匹配时返回“host”。

考虑到可能没有句号的事实,我们使用|修饰符。

^(.*?)(\.|$)

$将匹配行尾。

但是,如果您不确定是否需要句号,我会说不使用正则表达式,而是在字符串上使用查找函数或算法,这将更加实用和健壮。

答案 1 :(得分:0)

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

应该捕获它(我正在以这种方式使用它,因为它提供了大多数实现支持的非贪婪的正则表达式。)