我一直在尝试获取以下字符串的最后一个“两个字段”:
cc-api-data.bar.bar
external-atl3-1.xx.fbcdn.net
fbcdn.net
对于前两个字符串,我只想获取“ bar.bar”和“ fbcdn.net”。但是,对于最后一个字符串,我希望它与整个内容匹配,因为它具有我想要的所有内容。
我非常有信心可以用一个简单的脚本来完成此操作,但是在这种情况下,我尝试使用正则表达式。我只能在最后一个字符串上得到字符串的最后一部分,但不能得到整个东西。而且我不能告诉正则表达式该选择哪个字段。 我实际上只是想要最后两个字段,无论有多少定界符。
任何建议,甚至有可能
答案 0 :(得分:1)
我的猜测是,我们可能想要一个具有$
锚点的表达式,类似于:
([^.]*)\.([^.]*)$
朝向字符串的右侧。
我想知道正则表达式如何知道 只有最后一个时期之前的部分。是因为它抓住了 字符不是“。”并且因为它在行尾? 为什么不能抢到第一个八位位组?
很好的问题,也很难解释,通过播放此演示,我们可以观看比赛之前的许多步骤:
它将逐个字符开始并针对我们的表达式进行测试,一旦通过$
,它将通过表达式中的规则,但仍使用早期字符或八位字节。结束锚,那些早期的字符或八位字节会失败,因为我们的最后一个字符串结尾规则已损坏。