5

我对正则表达式非常生疏,需要一个从完全限定的域名 (FQDN) 中提取主机名,这是我所拥有的一个示例:

myhostname.somewhere.env.com
myotherhostname.somewhereelse.insomeotherplace.byh.info

我想回来

myhostname
myotherhostname

非常感谢一些帮助

我试过"(.+)\."了,但它匹配了右边的字符串并产生了:

myhostname.somewhere.env.
myotherhostname.somewhereelse.insomeotherplace.byh.
4

6 回答 6

3

使用这个正则表达式(.+?)(?=\.)

于 2012-07-10T14:27:06.130 回答
3

你想要第一组:

([^.]*).*

或者,第一场比赛来自:

[^.]*

或者,唯一的匹配来自:

^[^.]*
于 2016-05-11T20:24:50.270 回答
0
host.split('.').last(2).join('.')
于 2014-03-05T21:16:53.580 回答
0

你很接近,你只需要添加一个?让它不贪心。只需选择比赛中的第一组

(.+?)\.

但是,正如一些人已经建议的那样,您可能应该只拆分 a.并从拆分数组中获取第一项。正则表达式可能很昂贵

于 2012-07-10T14:27:13.300 回答
0

这个怎么样?

^(\w+)(\.\w+)*$

您可以在regexplanet进行测试

于 2012-07-10T14:32:17.713 回答
0
/^[^.]+/gm

https://regex101.com/r/jW3lC5/1

读取:行首后跟 1 个或多个非句点字符。'g' 表示全局(多个匹配),'m' 表示“多行模式”,它将^在每行的开头进行第一个匹配。

于 2016-04-04T20:27:05.537 回答