将字符串附加到片段中的单词
Append string to words in snippets
我目前正在使用 JavaScript 正则表达式为 VSCode 编写一些 Python 片段,我想要这样的片段:
给定
var1, var2, var3
生产
self.var1 = var1
self.var2 = var2
self.var3 = var3
我目前知道如何用换行替换逗号,但不知道如何用另一个字符串替换每个单词。我很不擅长正则表达式,所以它没有帮助。我想我需要执行以下操作的东西:
var1, var2 -> self.var1 = var1, self.var2 = var2
感谢您的帮助
编辑:
根据评论中的建议,我尝试了这个:/(.*,)/self.[=15=] = [=15=]/
由于几个原因,它显然不起作用:它匹配所有字符串直到最后一个逗号。 VSCode 不允许访问“\w”,但我看不出它有什么帮助。
我测试过的其他东西也不起作用,因为我正在寻找重复的每个单词:/(.*)/self.[=16=] = [=16=]/
因为我没有 post 它,这里是用新行替换的 comme :
/[,]/\n/g
Edit2(更新):
根据我尝试的评论建议:/(.*?)(?:, |$)/self. = \n/g
导致几乎完美的结果:
toto, titi, tata
导致
self.toto = toto
self.titi = titi
self.tata = tata
self. =
您可以使用
查找内容:\s*([^,\s]+)(?:,|$)
替换为:self. = \n
参见regex demo。
详情
\s*
- 0 个或更多空格
([^,\s]+)
- 捕获第 1 组:除空格和逗号之外的一个或多个字符
(?:,|$)
- 非捕获组匹配 ,
或行尾。
将以下内容添加到您的 python.json
代码段文件
"var-init": {
"prefix": "varinit",
"body": [
"${1/([\w_]+)(?:[,\s]|$)/self. = \n/g}",
"[=10=]"
],
"description": "var initialisation"
}
- 键入前缀:
varinit
- 按 Tab
- 键入您想要的变量,用
,
分隔(带或不带空格):titi,tata,toto
- 按 Tab
结果
self.titi = titi
self.tata = tata
self.toto = toto
并且光标在下一行。
编辑
正则表达式的简化并使用 Mark 关于 if 替换的提示 ${2:+\n}
"${1/([\w_]+)([, ])*/self. = ${2:+\n}/g}"
现在变量可以用空格分隔或,
我目前正在使用 JavaScript 正则表达式为 VSCode 编写一些 Python 片段,我想要这样的片段:
给定
var1, var2, var3
生产
self.var1 = var1
self.var2 = var2
self.var3 = var3
我目前知道如何用换行替换逗号,但不知道如何用另一个字符串替换每个单词。我很不擅长正则表达式,所以它没有帮助。我想我需要执行以下操作的东西:
var1, var2 -> self.var1 = var1, self.var2 = var2
感谢您的帮助
编辑:
根据评论中的建议,我尝试了这个:/(.*,)/self.[=15=] = [=15=]/
由于几个原因,它显然不起作用:它匹配所有字符串直到最后一个逗号。 VSCode 不允许访问“\w”,但我看不出它有什么帮助。
我测试过的其他东西也不起作用,因为我正在寻找重复的每个单词:/(.*)/self.[=16=] = [=16=]/
因为我没有 post 它,这里是用新行替换的 comme :
/[,]/\n/g
Edit2(更新):
根据我尝试的评论建议:/(.*?)(?:, |$)/self. = \n/g
导致几乎完美的结果:
toto, titi, tata
导致
self.toto = toto
self.titi = titi
self.tata = tata
self. =
您可以使用
查找内容:\s*([^,\s]+)(?:,|$)
替换为:self. = \n
参见regex demo。
详情
\s*
- 0 个或更多空格([^,\s]+)
- 捕获第 1 组:除空格和逗号之外的一个或多个字符(?:,|$)
- 非捕获组匹配,
或行尾。
将以下内容添加到您的 python.json
代码段文件
"var-init": {
"prefix": "varinit",
"body": [
"${1/([\w_]+)(?:[,\s]|$)/self. = \n/g}",
"[=10=]"
],
"description": "var initialisation"
}
- 键入前缀:
varinit
- 按 Tab
- 键入您想要的变量,用
,
分隔(带或不带空格):titi,tata,toto
- 按 Tab
结果
self.titi = titi
self.tata = tata
self.toto = toto
并且光标在下一行。
编辑
正则表达式的简化并使用 Mark 关于 if 替换的提示 ${2:+\n}
"${1/([\w_]+)([, ])*/self. = ${2:+\n}/g}"
现在变量可以用空格分隔或,