Blu*_*vag 15 regex search replace increment visual-studio-code
我目前正在制作一个大型 svg 精灵。不同的图像始终相距 2000 像素。
我所拥有的是:
<g transform="translate(0,0)">
<g transform="translate(0,2000)">
<g transform="translate(0,4000)">
Run Code Online (Sandbox Code Playgroud)
在正则表达式想要这个之后,只需将 2000 添加到第二个数字上:
<g transform="translate(0,2000)">
<g transform="translate(0,4000)">
<g transform="translate(0,6000)">
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是,一些新图像必须放在文档的顶部,这意味着我需要更改所有数字,而且它们相当多。
我正在考虑使用正则表达式,甚至发现它可以在 VS Code 的搜索栏中使用。问题是我从未使用过任何正则表达式,我有点困惑。
有人能给我一个解决方案并解释一下将所有样本数增加 2000 吗?我希望我之后能理解它,这样我就可以涉足这个话题了。我也很高兴只提供一般教程或我的特定用例的链接。
非常感谢 :)
在 VSCode 中,您无法在匹配/捕获中替换为递增值。您只能在作为替换参数传递给正则表达式替换函数/方法的回调函数内执行此操作。
安装Python脚本插件后,您可以使用Notepad++来执行这些替换。按照这些说明操作,然后使用以下 Python 代码:
def increment_after_openparen(match):
return "{0}{1}".format(match.group(1),str(int(match.group(2))+2000))
editor.rereplace(r'(transform="translate\(\d+,\s*)(\d+)', increment_after_openparen)
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。
笔记:
(transform="translate\(\d+,\s*)(\d+)匹配并捕获到第 1 组transform="translate(+ 1 个或多个数字,然后,是 0 个或多个空格(使用(transform="translate\(\d+,\s*))),然后将任何一个或多个数字捕获到第 2 组(使用(\d+))match.group(1)是第 1 组内容,match.group(2)是第 2 组内容。基本上,任何组都由一对未转义的括号组成,并且组计数从 1 开始。因此,如果您使用类似 的模式(Item:\s*)(\d+)([.;]),则需要使用return "{0}{1}{2}".format(match.group(1),str(int(match.group(2))+2000), match.group(3))。或者,return "{}{}{}".format(match.group(1),str(int(match.group(2))+2000), match.group(3))。
| 归档时间: |
|
| 查看次数: |
17699 次 |
| 最近记录: |