我正在寻找一个正则表达式来给出hostname
from a FQDN
。
例如,我只想要host
来自“”的“ host.company.com
”。
到目前为止,我已经想出了这个:
^(.{4}).*
但是,由于存储在 CMDB 中的某些设备没有完整的 FQDN,因此它也可以捕获没有点的设备。
我现在正在努力解决的问题是主机名的长度不同。
我正在寻找一个正则表达式来给出hostname
from a FQDN
。
例如,我只想要host
来自“”的“ host.company.com
”。
到目前为止,我已经想出了这个:
^(.{4}).*
但是,由于存储在 CMDB 中的某些设备没有完整的 FQDN,因此它也可以捕获没有点的设备。
我现在正在努力解决的问题是主机名的长度不同。
因此,由于我们试图在第一阶段之前获得所有内容:
^(.*?)\.
问号表示尽可能少地匹配,我们将 . 让它代表一个实际的点。
与 host.company.com 匹配时返回“主机”。
为了说明可能没有句点,我们使用|
修饰符。
^(.*?)(\.|$)
其中 $ 将匹配行尾。
但是,如果您不确定是否需要句点,我会说不要使用正则表达式,而是在字符串上使用查找函数或算法,这将更加实用和健壮。
^([^.]+)(\.|$| )
应该捕获它(我正在以这种方式使用它,因为它提供了大多数实现支持的非贪婪正则表达式)。