正则表达式在Atom或Sublime中找到用乘数替换

时间:2019-02-16 14:56:46

标签: regex sublimetext3 atom-editor

我想使用Atom或Sublime(最好是Atom)中的regex查找/替换函数,将所有出现的一组特定数字值替换为其各自的标量倍数。

例如,转换

headerContainer: {
    fontSize:'1em',
    padding: '1.5rem',
},

headerContainer: {
    fontSize: 16,
    padding: 24,
},

我的正则表达式发现:

(')([\d.]+)r?em(')

我的正则表达式替换可能性:

$2 \* 16

1 个答案:

答案 0 :(得分:4)

正如您对问题的评论中所提到的,仅通过正则表达式查找和替换是不可能直接实现的,但是使用内置功能在Sublime Text(可能还有Atom,如果它具有相似的功能)中是可能的

要在Sublime中执行此操作,您需要结合使用Find All选择所有文本和内置Arithmetic命令来更改选择。 Arithmetic命令的工作原理可以在this answer中找到,因此这里不再赘述。

要在此处执行您想要的操作,请执行以下操作:

  1. 使用Find面板(或Replace面板)搜索正则表达式'[\d.]+r?em',但是单击面板中的Find All按钮,选择缓冲区中所有匹配的项目。

  2. 使用命令面板中的Arithmetic命令并输入表达式round(float(x.strip("'rem"))*16),然后按Enter键以运行命令。

此处的表达式通过删除单引号和字符x来修改所选文本(rem),将结果字符串转换为浮点值,进行乘法运算,然后将值取整

结果是这样的:

Example of technique in action