Regex 如何在CSS类的括号中选择VScode中包含某些关键字的行

Regex 如何在CSS类的括号中选择VScode中包含某些关键字的行,regex,visual-studio-code,Regex,Visual Studio Code,我有一个很长的CSS文件,希望通过删除不同的行并将它们复制到相应的Scss文件来清理它: _layout.scss, _colorscheme.scss, _类型.scss 以下线程中的正则表达式是一种很好的方法: 但是,类名也会匹配,请参见示例: 正则表达式: ^.*(半径|宽度|方框阴影|填充|边距|显示:|高度:)..\n 代码-示例: .margin-text-class { margin: 1rem; color: #fff; } 为了完整起见,这里是我当前要分离的

我有一个很长的CSS文件,希望通过删除不同的行并将它们复制到相应的Scss文件来清理它:

_layout.scss, _colorscheme.scss, _类型.scss

以下线程中的正则表达式是一种很好的方法:

但是,类名也会匹配,请参见示例:

正则表达式:
^.*(半径|宽度|方框阴影|填充|边距|显示:|高度:)..\n

代码-示例

.margin-text-class {
    margin: 1rem;
    color: #fff;
}
为了完整起见,这里是我当前要分离的正则表达式

字体的正则表达式:

^.*(字体|行高|字母间距)。*\n

颜色的正则表达式:

^.*(颜色:|背景色| rgba)。*\n

我发现一个正则表达式可以选择括号内的所有内容: 当前仅当所有内容都在一行中时


(?谢谢@Thefourthbird,您的正则表达式不幸选择了整个块,但我只需要相应的行。但是代码对我帮助很大,因为我能够用它来调整它

如果其他人需要,例如保证金:

(?:\{)(?:\r?\n(?!\s*\}\s*\})。*)(^.*)(?=边距)(.*\n)


我使用正则表达式搜索并替换为阅读发布的答案的
{

,如果您想在第一次出现边距之前获得
{
之后的所有行,而不匹配
}
,您还可以使用一个否定字符类来匹配
}
之外的任何字符

\{[^\r}]+?\bmargin\b.*\r?\n
\{\r?\n[^\r\n}]*\bmargin\b[^\r\n}]*\r?\n

如果边距只能位于下一行,则可以在
{
之后匹配换行符,然后在下一行匹配边距,确保该行不包含
}

\{[^\r}]+?\bmargin\b.*\r?\n
\{\r?\n[^\r\n}]*\bmargin\b[^\r\n}]*\r?\n


请注意,这些模式与示例数据中的格式相匹配,并且不考虑任何嵌套。

尝试
^[^\r\n{}]*\b(?:半径^宽度^框影^填充^边距^;显示:|高度:)[^{.[^-\\{\r\n(?!\s*\\\\\}.*)*\r?\n\s*}
在这种情况下,这可能也适用于
\\\\\\\\\\\ r\n*。\r\n*.\r\n
谢谢@Thefourthbird