Css 使用VSCode搜索和替换将px替换为rem
我有一个旧的css项目,它使用Css 使用VSCode搜索和替换将px替换为rem,css,regex,visual-studio-code,Css,Regex,Visual Studio Code,我有一个旧的css项目,它使用px作为默认单位 现在该项目需要翻新,我需要使用VSCode搜索和替换将所有px替换为rem,比率为10px=1rem 20px应该转换为2rem,但是2.0rem也可以,我可以在之后去掉尾随的.0s 但是如果装置太小,小于5px,我不应该更换它 是的,对于一些规则,px有一些小数点。。。如果比较容易的话,就发射它 样本数据 字体大小:10px; 边界:0px; 页边距顶部:4px;//不要碰 边缘底部:12px; 保证金权利:50%; 左边距:-12px; 左
px
作为默认单位
现在该项目需要翻新,我需要使用VSCode搜索和替换将所有px
替换为rem
,比率为10px
=1rem
20px
应该转换为2rem
,但是2.0rem
也可以,我可以在之后去掉尾随的.0
s
但是如果装置太小,小于5px,我不应该更换它
是的,对于一些规则,px有一些小数点。。。如果比较容易的话,就发射它
- 样本数据
字体大小:10px;
边界:0px;
页边距顶部:4px;//不要碰
边缘底部:12px;
保证金权利:50%;
左边距:-12px;
左侧填充:120px;
右边填充:8px;
边界半径:计算(50%-1px);//不要碰
网格模板列:1fr 44px 1fr;
最高利润率:36.4倍;
边框宽度:10.5px;
边框宽度:.3px;//不要碰
边框宽度:.6px;//不要碰
边框宽度:3.3px;//不要碰
边框宽度:6.6px;
左边距:-1px;//不要碰
- 更换后的期望输出
字体大小:1rem;
边界:0rem;
页边距顶部:4px;//不要碰
边缘底部:1.2rem;
保证金权利:50%;
左边距:-1.2rem;
左:12雷姆;
填充权:.8rem;
边界半径:计算(50%-1px);//不要碰
网格模板柱:1fr 4.4rem 1fr;
最高保证金:3.64雷姆;
边界宽度:1.05雷姆;
边框宽度:.3px;//不要碰
边框宽度:.6px;//不要碰
边框宽度:3.3px;//不要碰
边框宽度:.66rem;
左边距:-1px;//不要碰
这是我一直在尝试但仍然无法正确实现的东西
\b(?![1234]px)(\d*)(\d)(?:\.(\d+))?px\b
这里有一个选项,可以使用
替换组$1.$2$3rem
,然后替换.0rem代码>带有0rem代码>
\b(?![1-4](?:\.\d+)?px)(?<!(?<!\S)\.)(\d*)(\d)(?:\.(\d+))?px\b
\b(?![1-4](?:\。\d+)?px)(?)?
解释
\b
单词边界
(?!
负前瞻
[1-4](?:\.\d+)?px
匹配数字1-4,可选地后跟
和1+数字以及px
)
关闭前瞻
(?负前瞻,断言左侧不是带有空格边界的
,以防止部分匹配
(\d*)(\d)
捕获组1,匹配可选数字,并捕获组2中的单个数字
(?:\.(\d+))
可选择匹配
并在第3组1+位中捕获
px\b
匹配px
后跟单词边界
在替换中使用
时,您可能会使用类似\b(?)(?:\.\d+?px)(?但请注意,您不能将0px;
转换为0rem;
。谢谢,工作顺利!我不知道您可以嵌套lookbehinds。
\b(?![1-4](?:\.\d+)?px)(?<!(?<!\S)\.)(\d*)(\d)(?:\.(\d+))?px\b