正则表达式在 Atom 或 Sublime 中查找替换为乘数
Regex find replace with multiplier in Atom or Sublime
我想使用 Atom 或 Sublime 中的正则表达式 find/replace 函数,最好是 Atom,用它们各自的标量倍数替换所有出现的一组特定数值。
例如,转换
headerContainer: {
fontSize:'1em',
padding: '1.5rem',
},
到
headerContainer: {
fontSize: 16,
padding: 24,
},
我的正则表达式发现:
(')([\d.]+)r?em(')
我的正则表达式替换可能性:
\* 16
正如在您的问题的评论中所提到的,仅使用正则表达式查找和替换是不可能直接实现的,但是在 Sublime Text 中(如果它具有类似的功能,可能还有 Atom)使用内置在功能上。
要在 Sublime 中执行此操作,您需要结合使用 Find All
到 select 所有文本和内置的 Arithmetic
命令来更改 select离子。 Arithmetic
命令如何工作的细节可以在 this answer 中找到,所以我不打算在这里介绍它。
要在此处执行您想要的操作,请执行以下操作:
使用 Find
面板(或 Replace
面板)搜索正则表达式 '[\d.]+r?em'
,但单击 Find All
按钮面板,它将 select 缓冲区中的所有匹配项。
使用命令选项板中的 Arithmetic
命令并输入表达式 round(float(x.strip("'rem"))*16)
并按回车键进入 运行 命令。
此处的表达式通过删除单引号和字符 rem
来修改 selected 文本 (x
),将结果字符串转换为浮点值,是否乘法,然后四舍五入。
结果是这样的:
我想使用 Atom 或 Sublime 中的正则表达式 find/replace 函数,最好是 Atom,用它们各自的标量倍数替换所有出现的一组特定数值。
例如,转换
headerContainer: {
fontSize:'1em',
padding: '1.5rem',
},
到
headerContainer: {
fontSize: 16,
padding: 24,
},
我的正则表达式发现:
(')([\d.]+)r?em(')
我的正则表达式替换可能性:
\* 16
正如在您的问题的评论中所提到的,仅使用正则表达式查找和替换是不可能直接实现的,但是在 Sublime Text 中(如果它具有类似的功能,可能还有 Atom)使用内置在功能上。
要在 Sublime 中执行此操作,您需要结合使用 Find All
到 select 所有文本和内置的 Arithmetic
命令来更改 select离子。 Arithmetic
命令如何工作的细节可以在 this answer 中找到,所以我不打算在这里介绍它。
要在此处执行您想要的操作,请执行以下操作:
使用
Find
面板(或Replace
面板)搜索正则表达式'[\d.]+r?em'
,但单击Find All
按钮面板,它将 select 缓冲区中的所有匹配项。使用命令选项板中的
Arithmetic
命令并输入表达式round(float(x.strip("'rem"))*16)
并按回车键进入 运行 命令。
此处的表达式通过删除单引号和字符 rem
来修改 selected 文本 (x
),将结果字符串转换为浮点值,是否乘法,然后四舍五入。
结果是这样的: