Regex 如何使用find和replace替换vscode中的所有camel大小写字符串和kebab大小写字符串

Regex 如何使用find和replace替换vscode中的所有camel大小写字符串和kebab大小写字符串,regex,vue.js,visual-studio-code,vue-component,Regex,Vue.js,Visual Studio Code,Vue Component,我为一个vue项目收集了大量html文件,这些文件目前使用的道具不一致 有些道具是v-bind:prop name=“”有些是v-bind:propName=“”,有些使用缩写:prop name=“”或:propName=“” 我还想按照以下步骤将所有道具替换为:prop name=“”语法 我知道你可以在vscode中使用正则表达式(或类似的编辑器)来选择只有camelCase格式的道具,但我有一些问题 对于find regex,我不知道如何: 选择v-bind:或:作为前缀,并将其从选择组

我为一个vue项目收集了大量html文件,这些文件目前使用的道具不一致

有些道具是
v-bind:prop name=“”
有些是
v-bind:propName=“”
,有些使用缩写
:prop name=“”
:propName=“”

我还想按照以下步骤将所有道具替换为:prop name=“”语法

我知道你可以在vscode中使用正则表达式(或类似的编辑器)来选择只有camelCase格式的道具,但我有一些问题

对于find regex,我不知道如何:

  • 选择
    v-bind:
    作为前缀,并将其从选择组中排除
  • 将大小写字符串拆分为选择组
  • 用两个以上的词处理propname
  • 对于替换语法,我非常确定我有正确的语法
    :\L$1-$2=“
    根据我在其他编辑器上找到的替换语法,但我也需要一些帮助

    完全可以,在最终更新之前,多次尝试以相同的格式获取所有内容


    我不反对使用不同的编辑器或类似codemod的东西(尽管我使用windows)

    来选择所有需要修改的字符串,使用正则表达式查找

    Find: ((?:v-bind)?:)([a-zA-Z0-9]+)([A-Z][a-z0-9]+)
    Options: .* (RegEx)  Aa (Match Case)
    
    使用菜单选项
    选择|选择所有出现的情况

    当您选择了所有要更改的内容(包括
    v-bind
    )后,可以使用以下键绑定将变量名称替换为kebab case

    {
    “键”:“ctrl+shift+alt+f8”、//或任何其他键绑定组合
    “命令”:“editor.action.insertSnippet”,
    “args”:{
    “代码段”:“${TM_SELECTED_TEXT/([A-Z][A-z0-9_]+)/-${1:/downcase}/g}”
    },
    “when”:“editorHasMultipleSelections&&textInputFocus”
    }
    

    也可以使用以下正则表达式进行查找替换

    Find: ((?:v-bind)?:)([a-zA-Z0-9]+)([A-Z][a-z0-9]+)
    Replace: $1$2-\L$3
    Options: .* (RegEx)  Aa (Match Case)
    
    它可以用于搜索文件查找替换

    您必须多次应用此“查找-替换”,因为变量中的大写字最多。查找-替换将调整变量名称的最后一个大写字。再次应用它将调整现在的最后一个大写字。如果仍然需要转换,您可以在搜索文件中看到


    但由于某些原因,VSC决定捕获组3是变量名的最后2个字符。如果我在[regex101][1](PCRE flavor以获得`\L`识别)上进行测试,则捕获的组是正确的,如果您选择了EcmaScript。 `$3`应该以大写字母开头,VSC也会在`:prop上找到一个命中率` 我


    感谢Mark指出我被
    Match Case
    陷阱咬了一口。在编程中,默认值是
    Match Case
    ,但在VSC中,默认值是
    Ignore Case

    感谢您对此进行的调查,如果vscode无法正确查找和替换,我可能必须查看另一个编辑器,因为我有大约150个文件要插入最后,我得到了一些额外的人手,我们使用了您的键绑定,谢谢!“但出于某种原因,VSC决定捕获组3是变量名的最后2个字符。”“而且VSC还找到了一个命中:prop“您是否选择了匹配案例的
    选项?这个正则表达式必须按预期工作。@马克,谢谢你给我指出这个反向默认行为。我在程序中使用正则表达式的次数比在编辑器中使用的次数要多。@MatthewOptionalMeehan我在Mark的评论后修改了答案。您可以使用搜索文件查找替换