我有一个只有字符串和冒号的文本伴侣语法。是否可以有一种模式,以匹配名称后面跟冒号的字符串而不是后面没有冒号的字符串?(如果这是不可能的,但是可以匹配一个冒号和一个字符串,那就足够了)
示例:
"a" "b" "this one should be different": "c" "d"
我当前的来源:
{
"name": "mylang",
"scopeName": "source.mylang",
"patterns": [
{
"match": ":",
"name": "punctuation.definition.colon.mylang"
},
{
"include": "#string"
}
],
"repository": {
"string": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.quote.begin.mylang"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.quote.end.mylang"
}
},
"name": "string.quoted.double.mylang",
"patterns": [
{
"include": "#stringcontent"
}
]
},
"stringcontent": {
"patterns": [
{
"match": "(?x) # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4}) # and four hex digits",
"name": "constant.character.escape.mylang"
},
{
"match": "\\\\.",
"name": "invalid.illegal.unrecognized-string-escape.mylang"
}
]
}
}
}
如果我正确理解了您的问题,我认为您可以使用此正则表达式
(\"[^\"]+\")\s*\:\s*((?:(?!\1)(\"[^\"]+\")|[^\"]))
第二组$2
将是必需的值。这样的模式将找到字符串"a": "b"
,但不会找到"a": "a"