首页 > 解决方案 > 使用正则表达式匹配字符串的左侧和右侧

问题描述

在任何正则表达式语言(虽然首选 PCRE)中,有没有办法否定匹配中间字符串的一部分?我已经查看了消极/积极的前瞻/后视,它们似乎能够匹配左侧或右侧,但不能同时匹配两者(可能我误解了一些东西)。

一些示例输入:

a "b" c
d "e" f

预期匹配:

a  c
d  f

左边或右边的字符串可以是任何字符/符号,我基本上想丢弃 . 中的任何内容"",包括引号本身。


为了使这一点更具体,我试图解析我们在 Splunk 中的一些错误日志,其中 Kubernetes pod 的名称包含在"". 删除唯一的 pod 名称将允许我制作一个不同的错误消息列表,这些错误消息会影响我正在尝试分类的系统。

标签: regexsplunk

解决方案


在 Splunk 中,您可以使用如下组:

...
| rex "(?<left>.*?)\"[^\"]*\"(?<right>.*)" ```captures only the left and right parts```
| eval pod=left+right                      ```concatenates left and right which essentially deletes the quoted part```
| table pod                                ```a table of results, just for illustration```

推荐阅读