gpt4 book ai didi

regex - 多行字符串文字的语法突出显示

转载 作者:行者123 更新时间:2023-12-05 05:15:24 25 4
gpt4 key购买 nike

我有一种自定义语言,我想在 Visual Studio Code 中为其提供语法突出显示。

在这种语言中,字符串文字以双引号或单引号开头和结尾。以双引号开头的字符串文字可能包含单引号,反之亦然。不会发生任何其他引号转义。但无论起始引号类型如何,文字都可能跨越多行。

在我的 tmLanguage.json 文件中,我尝试了这些正则表达式:

{
"match": "'[^']*'",
"name": "string.quoted.single.rss"
},
{
"match": "\"[^\"]*\"",
"name": "string.quoted.double.rss"
}

不幸的是,这只适用于单行文字。然后我尝试了

{
"match": "(?s)'[^']*'",
"name": "string.quoted.single.rss"
},
{
"match": "(?s)\"[^\"]*\"",
"name": "string.quoted.double.rss"
}

但是使用 (?s) 修饰符语法高亮根本不起作用。

有没有办法匹配多行字符串?

最佳答案

尝试使用begin/end 模式而不是简单的match。 Haxe 语言也有多行字符串文字,它匹配这样的字符串:

strings:
patterns:
- begin: '"'
beginCaptures:
'0': {name: punctuation.definition.string.begin.hx}
end: '"'
endCaptures:
'0': {name: punctuation.definition.string.end.hx}
name: string.quoted.double.hx
patterns:
- include: '#string-escape-sequences'

语法使用 YAML 而不是 JSON 来避免必须转义正则表达式,但翻译起来应该相当简单。该片段的来源是 here .

关于regex - 多行字符串文字的语法突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557913/

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