You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式从含多内容字符串的FQDN中提取主机名?

解决方案

要匹配两种格式行中的主机名(FQDN的第一个点前部分),可以从定位FQDN再提取主机名的思路入手,以下是两种可靠的实现方式:

方式一:单正则直接捕获目标

使用这个正则表达式:

\b(\w+)\.(?:[\w-]+\.)+[\w-]+\b
  • 原理:\b 是单词边界,确保匹配完整的FQDN;(\w+) 捕获主机名(由字母数字下划线组成);(?:[\w-]+\.)+[\w-]+ 匹配FQDN剩余的域名部分(非捕获组,避免干扰结果)。
  • 用法:对每行文本执行匹配,取第一个捕获组的内容即可。比如:
    • 第一行匹配到完整FQDN apl22002.prod.f02.dc2.example.com,捕获组1是 apl22002
    • 第二行匹配到完整FQDN apl220010.prod.f02.dc2.example.com,捕获组1是 apl220010

方式二:分场景匹配(更直观)

如果想针对两种行格式分别处理,也可以用包含两个分支的正则:

^(?:(\w+)\..*|.*-\s*(\w+)\..*)
  • 原理:
    • ^(\w+)\..* 匹配开头是FQDN的行,捕获组1为开头的主机名
    • .*-\s*(\w+)\..* 匹配-后是FQDN的行,捕获组2为FQDN的主机名
  • 用法:执行匹配后,取非空的捕获组内容(要么组1有值,要么组2有值)。

补充说明

如果你的主机名包含连字符-,可以把正则里的\w+改成[\w-]+,比如\b([\w-]+)\.(?:[\w-]+\.)+[\w-]+\b,适配带连字符的主机名。

内容的提问来源于stack exchange,提问作者Celavier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:18:23