我目前正在处理大型svg精灵。不同的图像始终相隔2000px。
我所拥有的是:
<g transform="translate(0,0)">
<g transform="translate(0,2000)">
<g transform="translate(0,4000)">
在regex想要这个之后,只需在第二个数字上加上2000:
<g transform="translate(0,2000)">
<g transform="translate(0,4000)">
<g transform="translate(0,6000)">
我现在遇到的问题是,一些新图像必须放在文档的顶部,因此,我需要更改所有数字,并且它们的数量很多。
我在考虑使用正则表达式,甚至发现它可以在VS Code的搜索栏中使用。事情是我从来没有使用过任何正则表达式,我有点困惑。
有人可以给我一个解决方案和解释,以将所有样本数增加2000吗?我希望以后能理解,这样我就可以涉足这一主题。我也很高兴只链接到一般教程或我的特定用例。
非常感谢你 :)
在VSCode中,您不能用匹配/捕获中的递增值替换。您只能在作为替换参数传递给regex replace函数/方法的回调函数中执行此操作。
安装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)
请参阅regex演示。
注意:
(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))
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句