代码之家  ›  专栏  ›  技术社区  ›  Celavier

Regex从包含多个单词的字符串中的fqdn中提取主机名

  •  0
  • Celavier  · 技术社区  · 1 年前

    我有很多字符串,它们看起来可以是这样的

    apl22002.prod.f02.dc2.example.com - DC2H2
    N2 - apl220010.prod.f02.dc2.example.com 
    

    我希望正则表达式只匹配主机名,例如第一行中的apl21002和第二行中的APL20010。

    我试过了 ^([^.]+) 它适用于第一行,但我不确定如何让它与第二行一起工作。 我试过了 ([\w_-]+(?:(?:\.[\w_-]+)+)) 其与FQDN很好地匹配但不完全匹配主机名。

    有人能给我指一下正确的方向吗?

    谢谢!

    1 回复  |  直到 1 年前
        1
  •  0
  •   cafce25    1 年前

    此regex将匹配中间至少有1个DOT字符的任何字符串,如“outlook.com”。它只会捕获第一部分(主机名)。您几乎使用了第二个正则表达式,但对整个字符串进行了分组。我注意到您包含了下划线字符“_”,如果有必要,请将其添加到下面的正则表达式中。

    ([\w-]+)(?:\.[\w-]+)+