You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则匹配空白分隔符且排除[]、双引号内部的空白字符

问题原因

你之前使用的正则仅将双引号包裹的内容纳入了保护范围,未匹配方括号[]包裹的完整内容,因此会拆分方括号内部的空格。

调整后的正则

调整捕获组的分支规则,把方括号块也加入保护范围即可,正则如下:
(\[[^\]]*\]|"[^"]*"|\S+)\s+

对应sed命令

使用带扩展正则支持的sed命令实现替换,同时处理行尾可能多出的逗号:

sed -E 's/(\[[^\]]*\]|"[^"]*"|\S+)\s+/\1,/g; s/,$//' 日志文件路径

正则说明

  • \[[^\]]*\]:匹配完整的方括号包裹块,从[开始到最近的]结束,内部所有字符(包括空格)会被整体捕获,不会被拆分
  • "[^"]*":保留原有的双引号块匹配逻辑,保护双引号内部的空格
  • \S+:匹配无包裹的连续非空白字段
  • 末尾的\s+匹配字段后的空白,替换为逗号即可实现字段分隔符转换

你提供的样例日志经过上述命令处理后,即可得到你期望的结果,方括号和双引号内部的空格都会完整保留。

内容的提问来源于stack exchange,提问作者Bek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:06:04