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

Adr*_*mew 1 regex sublimetext3 atom-editor

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

例如,转换

headerContainer: {
    fontSize:'1em',
    padding: '1.5rem',
},
Run Code Online (Sandbox Code Playgroud)

headerContainer: {
    fontSize: 16,
    padding: 24,
},
Run Code Online (Sandbox Code Playgroud)

我的正则表达式发现:

(')([\d.]+)r?em(')
Run Code Online (Sandbox Code Playgroud)

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

$2 \* 16
Run Code Online (Sandbox Code Playgroud)

Oda*_*urd 6

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

要在Sublime中执行此操作,您需要结合使用a Find All选择所有文本,并使用内置Arithmetic命令更改选择。该Arithmetic命令的工作原理可以在此答案中找到,因此在不做介绍。

要在这里执行您想要的操作,请执行以下操作:

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

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

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

结果是这样的:

实际技术示例