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

正则表达式问题:如何匹配目标名称对应的最近Shape ID?

解决正则匹配最近Shape ID的问题

问题原因

你当前的正则id:\s+"Shape\.([^"]+)",[\S\s]*?name: "Triangle"之所以匹配到Square的ID,是因为[\S\s]*?会从第一个id:开始,无差别匹配任意字符(包括换行),直到找到第一个name: "Triangle"——它会跨越两个Shape对象的边界,自然就拿到了最靠前的ID。

修正后的正则

id:\s+"Shape\.([^"]+)",(?:(?!id:)[\S\s])*?name: "Triangle"

关键改进点

  • 把原来的[\S\s]*?替换成(?:(?!id:)[\S\s])*?:
    • (?!id:)是负向前瞻断言,表示当前位置后面不能紧跟id:;
    • [\S\s]匹配任意字符(包括换行);
    • 整个(?:(?!id:)[\S\s])*?的作用是:在匹配过程中,一旦遇到下一个id:就停止,确保只在当前Shape对象的范围内匹配,不会跨越到前一个Shape中。这样就能精准锁定Triangle所属的最近ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:31:00