[英]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 ]*)
它将为您提供以下信息:
在这里,您已将您感兴趣的子字符串提取为“ textBetweenTags”。 请注意,如果标签之前或之后的文本包含数字或其他符号,则正则表达式应更改。
编辑:顺便说一句,不知道您是否知道该工具,但是您可以在此处测试模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.