从日志中提取名称(正则表达式,If / else)

时间:2014-12-22 13:53:52

标签: regex logging

我的日志文件中有不同的日志条目,并且想要提取主机名

我目前的正则表达式如下:\[[^:]*(但效果不佳)

我想要的是什么:

hostA
hostB
hostC
hostD

日志示例

Dec 22 12:15:40 0.0.0.0 [hostA: some.text]: 
Dec 22 12:15:40 0.0.0.0 [loremipsumdolor@hostB: some.text]:
Dec 22 12:15:40 0.0.0.0 [hostC: some.text]:
Dec 22 12:15:40 0.0.0.0 [sometext@hostD: some.text]:

1 个答案:

答案 0 :(得分:0)

您可以使用

\[([^\]@]*@)?(?P<host>.*?):

捕获命名组host中的主机名。 (Demo

(?<=[\[@])[^@]*?(?=:)

仅匹配主机名。 (Demo

第一个模式匹配第一个[字符后的文本,如果存在,则跳过下一个@

第二种模式会在[@:之间拾取任何内容,因此我认为它更容易产生误报。