regex - 使用正则表达式匹配字符串的左侧和右侧
问题描述
在任何正则表达式语言(虽然首选 PCRE)中,有没有办法否定匹配中间字符串的一部分?我已经查看了消极/积极的前瞻/后视,它们似乎能够匹配左侧或右侧,但不能同时匹配两者(可能我误解了一些东西)。
一些示例输入:
a "b" c
d "e" f
预期匹配:
a c
d f
左边或右边的字符串可以是任何字符/符号,我基本上想丢弃 . 中的任何内容""
,包括引号本身。
为了使这一点更具体,我试图解析我们在 Splunk 中的一些错误日志,其中 Kubernetes pod 的名称包含在""
. 删除唯一的 pod 名称将允许我制作一个不同的错误消息列表,这些错误消息会影响我正在尝试分类的系统。
解决方案
在 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```
推荐阅读
- java - 在 SpringMVC 的上下文中,如何让 Web 服务为同一个类提供不同的 JSON 表示?
- python - 以快速方式将 pandas 列乘以年度系数
- android - Android 发送 ArrayList 对象
- php - 为什么 Laravel 5 邮件,我附加了一个 .tmp 文件?
- arrays - mongodb: query to check if item in an array contains a particular string
- python - PCAP 未通过 Python API 调用以正确的格式下载
- python - 在 python 中从多进程迁移到 MPI
- node.js - express-validator 错误-> TypeError: req.checkBody 不是函数
- ruby-on-rails - Wicked PDF gem 在本地工作,但在部署时显示不同的字体
- r - 在闪亮会话结束时保存用户输入?