我试着为Splunk搜索做一个RegEx,应该从URL中提取TLD。来源是Panorama Logs。
RegEx:^(?:https?:\/\/)?(?<host>[^\/]+)?(?<tld>\.[^.?\/\n]+).*$
测试数据:
https://example.org/
qq.com
https://border.example.com/?bridge=basket&blood=animal
360.cn
http://example.com/?brother=bike
smugmug.com
shop-pro.jp
RegEx和testdata在Regex101.com上;我使用www.example.com生成测试数据randomlists.com,以匿名化源数据。capture-group是必需的;只是为了可读性。
描述一下你尝试了什么
从一组URL中匹配TLD;一些具有先前协议,一些没有。输入记录应该用换行符分隔,匹配项的长度不应该超过一条记录。
你期望发生的事
所有TLD都匹配并且在捕获组中。
以及实际结果
以/
结尾的行可以工作,但是没有/
的行不行。
1条答案
按热度按时间42fyovps1#
不使用
rex
,可以使用eval
和mvexpand
完成所有这些操作一个随处运行的例子:
我将最后几个步骤合并成一行,但这就是它正在做的:
|
“)字符断开URL列表mvexpand
多值字段split
:
字符上的每个URL(如果不存在,则split
没有任何内容mvfilter
中选择以下match
艾德split
的第0个(第一个)元素:.
“)的内容/
“)替换为空格(“``“),并且您所需的fqdn现在位于
busted
中提取TLD现在是微不足道的。添加以下内容:
或者,为了只使用
eval
,完全跳过rex
,请执行以下操作: