如何使用PCRE正则匹配字符串两端并剔除中间双引号包裹的内容
PCRE正则跳过/删除双引号及内部内容解决方案
核心实现逻辑
你的需求不需要用到前后瞻断言,直接使用替换方案即可实现,效率更高且逻辑更简单。
正则匹配规则
匹配所有双引号及包裹的内部内容的PCRE正则为:"[^"]*"
规则解释:
- 第一个
"匹配双引号开头 [^"]*匹配任意数量的非双引号字符,天然不会超出当前双引号的闭合范围- 最后一个
"匹配双引号结尾
示例效果验证
输入内容:
a "b" c d "e" f
将所有匹配到的"b"、"e"替换为空字符串,即可得到你预期的输出:
a c d f
Splunk场景使用方法
在Splunk的SPL语句中使用sed模式的rex命令即可完成字段处理,适合你批量清洗错误日志、剔除Pod名称后做去重统计的场景:
| rex mode=sed field=<你的日志字段名> "s/\"[^\"]*\"//g"
后续可直接对处理后的字段执行stats去重统计:
| stats count by <你的日志字段名>
边界情况兼容(可选)
如果你的日志中存在双引号内部嵌套转义双引号的场景(Kubernetes Pod名称不符合命名规范的情况下才会出现,一般不需要),可使用兼容转义的正则:"(?:\\"|[^"])*"
内容的提问来源于stack exchange,提问作者Alex Latchford
相关产品推荐
相关产品推荐

