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

如何在Boost正则的负向预查中处理多空格匹配需求?

解决方案

针对这个需求,这里提供两种适配不同Boost版本的正则方案:

方案1:分支捕获法(兼容所有Boost版本)

这种方法不依赖可变长度负向预查,通过区分「需保留的precision语句」和「需替换的独立highp float」实现:

正则表达式

\b(precision\s*(?:/\*.*?\*/\s*)*highp float;)|(highp\s+float)

替换规则

替换字符串设为:$1${2:+lowp float}

  • 匹配到第一个捕获组(precision开头的语句)时,直接保留原内容;
  • 匹配到第二个捕获组(独立的highp float)时,替换为lowp float。

原理

  • 第一个分支精准匹配precision开头、中间可包含任意空格/注释、结尾为highp float;的语句,确保这部分内容不被修改;
  • 第二个分支匹配所有不在precision语句中的highp float,执行替换。

方案2:可变长度负向预查法(仅Boost 1.59+支持)

若你的Boost版本在1.59及以上,可直接用负向预查排除precision相关场景:

正则表达式

(?<!\bprecision\s*(?:/\*.*?\*/\s*)*)highp\s+float

替换规则

直接将匹配内容替换为lowp float即可。

原理

  • (?<!...)是Boost支持的负向后行断言,用来排除「前面是precision加任意空格/注释」的highp float;
  • (?:/\*.*?\*/\s*)*覆盖precision与highp之间可能存在的注释块和空格,适配你提到的复杂格式场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:16:17