Regex 正则表达式查找替换为Atom或Sublime中的乘法器

Regex 正则表达式查找替换为Atom或Sublime中的乘法器,regex,sublimetext3,atom-editor,Regex,Sublimetext3,Atom Editor,我想使用Atom或Sublime(最好是Atom)中的regex find/replace函数,用它们各自的标量倍数替换一组特定数值的所有出现 例如,转换 headerContainer: { fontSize:'1em', padding: '1.5rem', }, 到 我的正则表达式查找: (')([\d.]+)r?em(') 我的正则表达式替换可能性: $2 \* 16 正如在对您的问题的评论中所提到的,仅使用正则表达式查找和替换是不可能直接实现的,但在Sublime

我想使用Atom或Sublime(最好是Atom)中的regex find/replace函数,用它们各自的标量倍数替换一组特定数值的所有出现

例如,转换

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

我的正则表达式查找:

(')([\d.]+)r?em(')
我的正则表达式替换可能性:

$2 \* 16

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

要在Sublime中执行此操作,您需要使用“全部查找”来选择所有文本,并使用内置的算术命令来更改选择。算术命令如何工作的细节可以在中找到,所以我不打算在这里介绍

要在此处执行所需操作,请执行以下操作:

使用“查找”面板或“替换”面板搜索正则表达式“[\d.]+r?em”,但单击面板中的“全部查找”按钮,将选择缓冲区中的所有匹配项

使用命令选项板中的算术命令,输入表达式roundfloatx.strip'rem*16,然后按enter键运行该命令

这里的表达式通过删除单引号和字符rem来修改所选文本x,将结果字符串转换为浮点值,进行乘法,然后对值进行舍入

结果是这样的:


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

要在Sublime中执行此操作,您需要使用“全部查找”来选择所有文本,并使用内置的算术命令来更改选择。算术命令如何工作的细节可以在中找到,所以我不打算在这里介绍

要在此处执行所需操作,请执行以下操作:

使用“查找”面板或“替换”面板搜索正则表达式“[\d.]+r?em”,但单击面板中的“全部查找”按钮,将选择缓冲区中的所有匹配项

使用命令选项板中的算术命令,输入表达式roundfloatx.strip'rem*16,然后按enter键运行该命令

这里的表达式通过删除单引号和字符rem来修改所选文本x,将结果字符串转换为浮点值,进行乘法,然后对值进行舍入

结果是这样的:


这是什么语言?@sean这在IDE中,可能会将其中的一部分更改为\d+\。\d*r?em-不确定“和”在做什么。这可能是特定于IDE的正则表达式。我知道你想删除引号。但通常我会用Python之类的东西来处理名称捕获组/JavaScript@JGFMK-不,我是问代码是用什么语言编写的,因为它不是CSSY,你不能在字符串替换模式中进行数学运算。您需要一种能够访问回调的成熟语言。Python在这里可能是最简单的。@AdrianBartholomew您不能期望匹配2并用*16 32的结果替换它。您只能对此类替换进行硬编码。在记事本++中,您可以使用Python脚本插件来做您想做的事情,但是一个普通的Python脚本会更好。这是什么语言?@sean这在IDE中,可能会将它的一部分更改为\d+\。\d*r?em-不确定“和”在做什么。这可能是特定于IDE的正则表达式。我知道你想删除引号。但通常我会用Python之类的东西来处理名称捕获组/JavaScript@JGFMK-不,我是问代码是用什么语言编写的,因为它不是CSSY,你不能在字符串替换模式中进行数学运算。您需要一种能够访问回调的成熟语言。Python在这里可能是最简单的。@AdrianBartholomew您不能期望匹配2并用*16 32的结果替换它。您只能对此类替换进行硬编码。在记事本++中,您可以使用Python脚本插件来完成您想要的任务,但是普通的Python脚本会更好。我用Atom以一种迂回的方式完成了它。我首先用1.5*16替换了“1.5rem”。然后对所有这些模式进行了另一次搜索。选项Enter将它们放入缓冲区,然后Shift-Command-Y计算它们。我从不费心尝试升华,因为我认为它不会有任何不同。刚刚尝试了你的解决方案,这是一个非常好的解决方案,所以我会接受它。-当我有能力的时候。也许有一个Atom的算术插件。干得好美丽的我用Atom以一种迂回的方式完成了它。我首先用1.5*16替换了“1.5rem”。然后对所有这些模式进行了另一次搜索。选项Enter将它们放入缓冲区,然后Shift-Command-Y计算它们。我从不费心尝试升华,因为我认为它不会有任何不同。刚试过你的独奏曲 这是一个非常好的选择,所以我们会接受它当我有能力的时候。也许有一个Atom的算术插件。干得好
$2 \* 16