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

在不支持前后瞻的CodeMirror中,如何用正则匹配=FUNCTION(...)以外内容?

问题与解决方案

环境与需求

使用CodeMirror编辑器,基于JavaScript环境,不支持正则前后瞻语法,仅能提供纯正则表达式实现内容高亮,无法编写额外代码。

语法规则要求所有内容必须写在单个根函数内,正确写法示例:

=FUNCTION(X="t")

错误写法示例(根函数外存在多余内容):

=FUNCTION(X="t")=()

需要编写正则表达式,匹配**=FUNCTION(...)根函数之外的所有内容**(如上述错误示例中的=()),匹配效果参考以下示例(^^^标记为需高亮的匹配部分):

示例1:

=FUNCTION(...)=()
              ^^^

示例2:

=FUNCTION(X="t")=()
                ^^^

示例3:

=FUNCTION(X="t"()()())=()
                      ^^^

示例4:

=FUNCTION(X="t"()()())=(()=()
                      ^^^^^^^

示例5:

=FUNCTION(X="t"()()())=XXXXXX
                      ^^^^^^^

示例6:

=FUNCTION(X="t"""()()())=XXXXXX
                        ^^^^^^^

示例7:

=FUNCTION(X="t"""()()(), X()="b")=XXXXXX
                                 ^^^^^^^

可行正则表达式

^(?:(?!=FUNCTION\()).)*|(?:=FUNCTION\((?:[^()""]|"(""|[^"])*"|\((?:[^()""]|"(""|[^"])*"|\([^()""]|"(""|[^"])*"\))*\))\)(.*)$

正则说明

  1. 匹配前缀错误内容:^(?:(?!=FUNCTION\()).)*
    匹配字符串开头到=FUNCTION(之前的所有内容,也就是根函数前的非法内容。

  2. 匹配后缀错误内容:(?:=FUNCTION\((?:[^()""]|"(""|[^"])*"|\((?:[^()""]|"(""|[^"])*"|\([^()""]|"(""|[^"])*"\))*\))\)(.*)$

    • 首先完整匹配合法的=FUNCTION(...)根函数(正确处理嵌套括号、含连续双引号的字符串);
    • 然后匹配根函数结束括号)之后的所有内容,也就是根函数后的非法内容。

该正则通过全局匹配,可以同时捕获根函数前后的所有非法内容,完全符合需求且未使用前后瞻语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:05:55