【发布时间】:2020-04-02 16:16:14
【问题描述】:
我目前正在使用:s/(-[a-z].*-)([a-z])/$1\U$2/.,但这只是删除了第二个- 之后的字符,而不是将其转换为大写变体?
我有一个 CSS 文件,我有几个条目,形式为,
ql-font-timesnewroman、ql-font-arial、ql-font-geneva 等
我想将它们转换为ql-font-Timesnewroman、ql-font-Arial、ql-font-Geneva 等。
我将 VSVim 与 VSCode 一起使用,我不确定它使用的是哪个版本的 Regex(但我相信它是 Javascript 变体)。
如果我使用 PHP 变体,它可以正常工作。 (https://regex101.com/r/8aZI2m/1)
但如果我使用 Javascript 变体,它只会在结果中添加 U:ql-font-Utimesnewroman。
在 VSCode 中,它更进一步,只是插入 \U。 (ql-font-\Utimesnewroman)。
如果我将正则表达式更改为看起来更像 :s/(-[a-z].*-)([a-z])/$1/\U$2/.,它会继续删除第二个匹配项,而不是将其转换为大写 (ql-font-imesnewroman)
VSVim / VSCode 是否需要任何特殊语法才能使其正则表达式正确匹配并替换为大写?
【问题讨论】:
-
VSC 使用 Javascript 正则表达式变体,所以没有
\U -
该死的,我看了看不同的版本后才知道。我希望它有所不同,因为无论出于何种原因,该网站将
/\U视为\U,但VSC 只会删除匹配项。 javascript 正则表达式是否有大写变体? -
你应该使用
{1:/upcase}code.visualstudio.com/docs/editor/… -
阅读该链接和您的建议后,如果我想将遇到的第一个字母字符转换为大写,我的正则表达式应该看起来像
:s/([a-z])/${1:/upcase}/.,对吗?但是当我使用它时,它所做的只是用${1:替换第一个字母字符。我错过了什么吗?
标签: regex visual-studio-code vscode-snippets vsvim