提取最后两个字段,无论大小

时间:2019-06-24 15:59:37

标签: regex splunk

我一直在尝试获取以下字符串的最后一个“两个字段”:

cc-api-data.bar.bar
external-atl3-1.xx.fbcdn.net
fbcdn.net

对于前两个字符串,我只想获取“ bar.bar”和“ fbcdn.net”。但是,对于最后一个字符串,我希望它与整个内容匹配,因为它具有我想要的所有内容。

我非常有信心可以用一个简单的脚本来完成此操作,但是在这种情况下,我尝试使用正则表达式。我只能在最后一个字符串上得到字符串的最后一部分,但不能得到整个东西。而且我不能告诉正则表达式该选择哪个字段。 我实际上只是想要最后两个字段,无论有多少定界符。

任何建议,甚至有可能

1 个答案:

答案 0 :(得分:1)

我的猜测是,我们可能想要一个具有$锚点的表达式,类似于:

([^.]*)\.([^.]*)$

朝向字符串的右侧。

Please see the demo for additional explanation

  

我想知道正则表达式如何知道   只有最后一个时期之前的部分。是因为它抓住了   字符不是“。”并且因为它在行尾?   为什么不能抢到第一个八位位组?

很好的问题,也很难解释,通过播放此演示,我们可以观看比赛之前的许多步骤:

Steps of Regular Expression

它将逐个字符开始并针对我们的表达式进行测试,一旦通过$,它将通过表达式中的规则,但仍使用早期字符或八位字节。结束锚,那些早期的字符或八位字节会失败,因为我们的最后一个字符串结尾规则已损坏。