gpt4 book ai didi

javascript - 如何在 vscode 扩展中使用正则表达式保留返回战车?

转载 作者:行者123 更新时间:2023-11-30 19:40:54 30 4
gpt4 key购买 nike

我正在 VSCode 中编写 OCaml 代码样式扩展。我会正确格式化分隔符 :

除了新行,我的代码对我的测试工作正常

let editor = vscode.window.activeTextEditor;)

// text1 for test azae:aaz azea: zae azeaz :zae eaz: zeazea azeaz :zae
// text2 for test azae:aaz azea: zae azeaz :zae eaz: zeazea azeaz :zae
// text3 for test azae:
// aze

let selection = editor.selection
let text = editor.document.getText(selection)
textreg = text.replace(new RegExp(/(\s|\t)*[\:](\s|\t)*/g,'gi'),": ")
editor.edit(builder => builder.replace(selection, textreg));

我得到:

text3 for test azae:    // aze

我希望有:

text3 for test azae:
// aze

我该怎么做?

编辑:感谢您的评论,我意识到我对\s 的误解

写下我的预期结果:

text1 for test azae:aaz azea: zae azeaz :zae eaz:  zeazea azeaz  :zae
text2 for test azae:aaz azea: zae azeaz :zae eaz: zeazea azeaz :zae
text3 for test azae:
aze

应该变成

text1 for test azae: aaz azea: zae azeaz: zae eaz: zeazea azeaz: zae
text2 for test azae: aaz azea: zae azeaz: zae eaz: zeazea azeaz: zae
text3 for test azae:
aze

就像@Yunnosch 说我需要一个没有\n 的\s

我尝试:

textreg = text.replace(new RegExp(/(\s)*[\:]([\s^\n])*/g,''),": ")

但在这种情况下

azae:aaz

成为

azae: 

最佳答案

在您的模式 (\s)*[\:]([\s^\n])* 中,您使用字符类 [\s^\n] 它将匹配一个空白字符、一个 ^ 和一个换行符。 (注意 \s 本身也匹配一个换行符)

这样 text3 for test azae: 之后的换行符也将被匹配,您将得到 text3 for test azae: aze

似乎您想删除冒号前后的空格或制表符,并得到一个冒号后跟一个空格作为返回。

在那种情况下你可以使用:

[ \t]*:[ \t]*

作为替换,使用一个冒号后跟一个空格 :

Regex101 demo

您的代码可能如下所示(您可以省略 /i 标志)

text.replace(/[ \t]*:[ \t]*/g, ": ")

注意,如果您打算使用 \s 并希望使用 ^ 将换行符从中排除,您可以放置在字符类的开头并使用 this pattern而不是 \S 将匹配非空白字符:

[^\S\n\r]*:[^\S\n\r]*

关于javascript - 如何在 vscode 扩展中使用正则表达式保留返回战车?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415300/

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