我在代码中有一堆字符串,例如:
<td style="background-color:#fdfdff"> </td>
和
<td> </td>
在一个文件中。
目标是替换
来自第一个示例 0,而
来自 - (破折号)
我正在使用 VScode 正则表达式,但找不到用特定值替换捕获的组的方法,因为 $1、$2 组指的是原始字符串组。 这只是一个例子,我是如何尝试实现这一目标的,但 VScode 不会忽略分组的正则表达式。
最佳答案
另一种方法是使用可以进行条件替换的代码片段。使用此代码段:
"replaceTDs": {
"prefix": "tdr", // whatever prefix you want
"body": [
"${TM_SELECTED_TEXT/(?<=\">)( )|( )/${1:+0}${2:+-}/g}",
]
}
条件替换可以非常简单,因为您首先 find
并仅选择您感兴趣的两个备选文本。所以
查找:<td\s*(style="[^"]*"\s*)> </td>|<td> </td>
旧版本
这个更简单的查找可能对您有用:
<td\s*(style="[^"]*")?\s*> </td>
不要替换,而是 Control+Shift+L :选择所有两个选项。 Esc 从查找小部件中聚焦到编辑器。
然后应用您的代码段,在本例中键入 tdr
+制表符
所有的改变都完成了。您只需制作一次代码片段,然后进行一次查找。
这种技术比运行尽可能多的查找/替换要好一些,因为你有替换要做。即使有更多的条件替换,也可能是对一个片段的简单更改以添加更多替换。
此外,如果您使用键绑定(bind)来触发您的代码段(您不必从查找小部件更改焦点 - 或创建单独的代码段),您还可以进一步简化此过程。所以没有片段,但是这个键绑定(bind):
{
"key": "alt+w",
"command": "editor.action.insertSnippet",
"args": {
"snippet": "${TM_SELECTED_TEXT/(?<=\">)( )|( )/${1:+0}${2:+-}/g}"
},
"when": "editorHasSelection"
}
现在是同一个演示:
关于html - VScode - 用值替换捕获的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65170303/