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