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

如何编写正则表达式匹配YAML中不以连字符开头的键值对

正则表达式调整方案

问题原因

你之前优化后的正则匹配失败主要有两个核心问题:

  • 负向先行断言排除带连字符的行后,没有预留缩进空格的匹配逻辑,直接要求行首就是键名字符,YAML中带缩进的属性行自然无法命中
  • 值的匹配规则过于严格,仅支持字母、数字、横杠、点、斜杠,无法匹配包含冒号、引号的合法YAML值

可用正则表达式

^(?!\s*-)\s*([\w.-]+)\s*:\s*(.*?)\s*$

规则说明

  • ^(?!\s*-):负向先行断言,排除所有行开头带任意空格+连字符的行
  • \s*:匹配键前面的任意缩进空格
  • ([\w.-]+):捕获YAML的键名,支持字母、数字、下划线、横杠、点
  • \s*:\s*:匹配键值分隔的冒号,支持冒号前后的任意空格
  • (.*?):非贪婪捕获值内容,兼容带引号、冒号、斜杠等各类符号的YAML值
  • \s*$:匹配行尾多余空格

匹配效果验证

针对你给出的示例YAML,该正则会精准命中以下两行:

image: us-west-2.amazonaws.com/abcd:45
mountPath: "/etc/keys/ssl"

完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:21:03