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

寻求G代码正则表达式优化:为指定行添加G4 P1且避免重复

G代码自动追加G4 P1的逻辑优化

需求说明

当某行G代码满足以下条件时,自动在该行末尾追加G4 P1;若该行已存在G4 P1则忽略:

  • 包含M3/M4指令与带任意数字的S指令
  • 支持指令间有无空格的多种格式(如M4S10000、S10000 M4、M4 S10000、S10000M4)

现有代码问题

已有的正则表达式覆盖了指令间有无空格的匹配场景,但缺少**避免重复添加G4 P1**的逻辑:

// 初始代码
gcode = gcode.replace(/(S[0-9]* M[3-4])|(M[3-4] S[0-9]*)/g, '$& G4 P1');

// 优化后(覆盖有无空格,但仍会重复添加)
gcode = gcode.replace(/(S[0-9]* M[3-4])|(M[3-4] S[0-9]*)|(M[3-4]S[0-9]*|S[0-9]*M[3-4])/g, '$& G4 P1');

多次运行上述代码时,会在已包含G4 P1的行中重复追加,产生无效冗余代码。

最终优化方案

通过负向预查结合多行匹配模式,实现精准判断与追加:

gcode = gcode.replace(/^(?!.*G4 P1).*(?:M[3-4]\s?S\d+|S\d+\s?M[3-4]).*$/gm, '$& G4 P1');

正则逻辑解析

  • ^/$:匹配行的开头与结尾,结合gm(全局多行模式)实现逐行处理
  • (?!.*G4 P1):负向预查,确保当前行不包含G4 P1,彻底避免重复添加
  • (?:M[3-4]\s?S\d+|S\d+\s?M[3-4]):匹配所有M3/M4与S指令的组合格式:
    • M[3-4]\s?S\d+:覆盖M4S10000、M4 S10000格式
    • S\d+\s?M[3-4]:覆盖S10000M4、S10000 M4格式
  • .*:匹配指令前后的其他内容,确保整行符合条件时才执行追加操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:33:26