Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将字符串附加到代码段中的单词_Regex_Visual Studio Code_Vscode Debugger - Fatal编程技术网

Regex 将字符串附加到代码段中的单词

Regex 将字符串附加到代码段中的单词,regex,visual-studio-code,vscode-debugger,Regex,Visual Studio Code,Vscode Debugger,我目前正在使用JavaScript正则表达式为VSCode编写一些Python代码片段,我希望有一个类似于: 给定 var1、var2、var3 产生 self.var1=var1 self.var2=var2 self.var3=var3 我目前知道如何用换行符替换逗号,但不知道如何用另一个字符串替换每个单词。我对正则表达式很在行,所以这没用。我想我需要做以下事情: var1, var2 -> self.var1 = var1, self.var2 = var2 谢谢你的帮助 编辑

我目前正在使用JavaScript正则表达式为VSCode编写一些Python代码片段,我希望有一个类似于:

给定

var1、var2、var3
产生

self.var1=var1
self.var2=var2
self.var3=var3
我目前知道如何用换行符替换逗号,但不知道如何用另一个字符串替换每个单词。我对正则表达式很在行,所以这没用。我想我需要做以下事情:

var1, var2 -> self.var1 = var1, self.var2 = var2
谢谢你的帮助

编辑: 根据评论中的建议,我尝试了以下方法:
/(.*)/self.$0=$0/
它显然不起作用有几个原因:它匹配所有字符串直到最后一个逗号。VSCode不允许访问“\w”,但我看不出它有什么帮助。 我测试的另一个东西也无法工作,因为我正在寻找复制每个单词:
/(.*)/self.$0=$0/

由于我没有发布,下面是用一条新线路替换的comme:
/[,]/\n/g

第2版(更新): 根据我尝试的评论建议:
/(.*?(:,|$)/self.$1=$1\n/g
,结果几乎完美:

托托、提提、塔塔 导致

self.toto=toto
self.titi=titi
self.tata=塔塔
自我
您可以使用

查找内容:
\s*([^,\s]+)(?:,|$)

替换为
self.$1=$1\n

详细信息

  • \s*
    -0个或更多空格
  • ([^,\s]+)
    -捕获组1:除空格和逗号之外的一个或多个字符
  • (?:,|$)
    -与
    或行尾匹配的非捕获组

将以下内容添加到
python.json
代码段文件中

  "var-init": {
    "prefix": "varinit",
    "body": [
      "${1/([\\w_]+)(?:[,\\s]|$)/self.$1 = $1\n/g}",
      "$0"
    ],
    "description": "var initialisation"
  }
  • 键入前缀:
    varinit
  • 按Tab键
  • 键入要用
    分隔的变量,包括或不包括空格:
    titi、tata、toto
  • 按Tab键
结果

self.titi = titi
self.tata = tata
self.toto = toto
光标在下一行

编辑

正则表达式的简化和使用来自标记的关于if替换的提示
${2:+\n}

"${1/([\\w_]+)([, ])*/self.$1 = $1${2:+\n}/g}"

现在变量可以用空格分隔,或者

我实际上不知道如何尝试任何东西。正如我所说的,我可以用换行符代替逗号(这很容易),但我不知道从哪里开始。我想选择每个单词的开头,并将其替换为“self.”以及复制每个单词并在前面添加“=”。但是我不知道如何做itOk,所以这一点都没有帮助,因为我已经阅读了JS和Python的整个regex文档。我想复制一个单词并在其前后插入字符串。我读到的东西没有一个能回答这个问题,也没有一个能引出一个想法。好吧,这一点也不清楚,因为你链接了一些东西,在一行的末尾添加了字符串。我测试了你解释的内容,但不起作用,因为正如你所说,我匹配了任何单词。但我想复制的是每个单词:“toto,tata,titi”应该给“toto,tata,tata,titi titi”并且它给了“toto,tata,titi toto,tata,titi titi”试试下面:/(*?)(:,,|$)/self.$0=$0\n/我想我们这里有些东西,谢谢@HarmvanderWal。不幸的是,它完全不起作用。我会更新这个问题看起来很熟悉。。。我建议使用“${1/\\s*([^,]+)(,)*/self.$1=$1${2:+\n}/g}”,因为正则表达式稍微简单一些,并且在最后一个变量之后不添加额外的换行符。空间处理得更好。我用你的代码将空格添加到后面几行的开头。修改到变量已经列出和选择的地方也很容易。如果这是OP的一个用例。有关在类构造函数片段中使用可变数量参数的更复杂的情况,请参阅,对于类初始值设定项,请参阅