Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 使用VSCode搜索和替换将px替换为rem_Css_Regex_Visual Studio Code - Fatal编程技术网

Css 使用VSCode搜索和替换将px替换为rem

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; 左

我有一个旧的css项目,它使用
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