繁体   English   中英

RegEx-使用GROK提取词组之间的文本

[英]RegEx - extracting text between phrases using GROK

我正在尝试使用RegEx在两个“标签”之间捕获一些信息。 示例:一些文本和更多文本错误消息:找不到http 404 过程:一些文本一些文本

我需要分析整个字段,找到短语“错误消息:”和“过程:”,并捕获它们之间的内容,在本例中为“找不到HTTP 404”。 我只需要显示标签之间的文本,而不必显示标签。

我使用RegEx和Grok尝试了很多方法,但尝试均未成功。

有谁知道我如何做到这一点?

非常感谢!

@capture = $text =~ m/(Error message:)(.*?)(Procedures:)/s;
$capture = join '', @capture;
$capture =~ s/<.*?>//g;

只需捕获它,将其保存在数组中,然后对其进行任何操作即可...在这里,我将匹配项转换回字符串,因此我可以应用另一个正则表达式来删除标签。 您当然可以在每个数组的索引上应用这样的替换正则表达式。

希望该代码不包含错误,我没有进行编译,并且希望您使用的语言与perl 5不同时,可以找到它的替代方法。

正如您也要求使用Grok模式一样,我考虑了提交另一个答案。 在这种情况下,我的解决方案基于使用规则表达式匹配不相关部分(包括预期标签的结尾或开头)的grok模式。 解决方案是:

(?<notImportant1>[A-Za-z ]* Error message:) (?<textBetweenTags>[A-Za-z0-9 ]*) (?<notImportant2>Procedures: [A-Za-z ]*)

它将为您提供以下信息:

  • notImportant1 :一些文本和更多文本错误消息:
  • textBetweenTags :找不到HTTP 404
  • notImportant2 :过程:一些文本一些文本

在这里,您已将您感兴趣的子字符串提取为“ textBetweenTags”。 请注意,如果标签之前或之后的文本包含数字或其他符号,则正则表达式应更改。

编辑:顺便说一句,不知道您是否知道该工具,但是您可以在此处测试模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM