gpt4 book ai didi

javascript - 在正则表达式中捕获重复的组

转载 作者:行者123 更新时间:2023-12-02 17:41:37 28 4
gpt4 key购买 nike

我有以下字符串:

{:.test1, .test2, .test3}

我将其用作 Markdown 的扩展。对于该字符串,我想要一个带有 ace 的语法高亮显示。但是,我无法构建捕获正确组的匹配正则表达式。

我需要捕获的是:{: 作为第一组。第二组中的所有 .test#。所有,作为第三组,最后}

我当前想到的正则表达式是:({:)(\\.\\w+)(,\\s*|)

但是,这只匹配:{:,.test1, 而不是以下 .test2

我需要的是一个正则表达式,它捕获 {: ,然后捕获 .test1, 的所有发生,最后 }

目的是为逗号设置与类名不同的颜色,因此我需要捕获它。

参见https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode

还有一个例子:

{
token : ["constant", "keyword"],
regex : "^(#{1,6})(.+)$"
} // ### Header -> constant(###), keyword( Header)

这里它们匹配我需要的两个组,但是 4 个组。

{
token : ["constant", "keyword", "variable", "constant"],
regex : "unknown"
}
// {:.test1, .test2} -> constant({:), keyword( .test1), keyword(.test2), variable(,), constant(})

最佳答案

这对于一个正则表达式来说是不可能的。要么使用

    {
onMatch : function(v) {
var tokens = v.slice(2, -1).split(/(,\s+)/).map(function(v) {
return {
value: v,
type: v[0]=="."? "keyword" : "variable"
}
})
tokens.unshift({value: "{:", type: "constant"})
tokens.push({value: "}", type: "constant"})
return tokens;
},
regex : "{:((\\.\\w+)(,\\s*|))+}"
}

this.$rules = {
"start" : [ {
token : "constant",
regex : "{:",
next : [{
regex: "\\.\w+",
token: "keyword"
},{
regex: ",",
token: "variable"
},{
regex: "$|}",
token : "constant",
next: "pop"
}]
}]
};
this.normalizeRules()

关于javascript - 在正则表达式中捕获重复的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156148/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com