我正在尝试在Notepad++中执行正则表达式替换。Regex不是我的强项,但我以为我已经弄明白了。我尝试匹配逗号后面跟任意数量的空格,但仅当行以“{”结尾时。我想用“,\r\n”(逗号后面跟着一个新行)替换这些逗号和后面的任何空格。
目的是将多选择器组中的每个选择器放在新的行上,以使其更容易阅读。下面是一个例子:
.messageBox label, .messageBox a, .messageBox li {
font-size: 0.8em;
font-family: "Segoe UI",Arial,sans-serif;
}
应该成为
.messageBox label,
.messageBox a,
.messageBox li {
font-size: 0.8em;
font-family: "Segoe UI",Arial,sans-serif;
}
请注意选择器行的逗号是如何被替换为,\r\n的,但字体系列样式却没有。这就是寻找以“{”结尾的行的目的。
这是我目前使用的正则表达式:
(, *)(?=.*\{$)
这在regexr编辑器中看起来像预期的那样工作。它查找选择器行中的逗号,但不查找字体系列行中的逗号。但是,notepad可以在两者中找到逗号。我做错了什么?我已经在Notepad中选中了“matches newline”复选框,这应该会启用/m(多行)标志。
1条答案
按热度按时间k97glaaz1#
尝试使用
(?<=,)\s+(?=.*{$)
,并仅使用\r\n
作为替代。我用Notepad++ v8.4.8测试了它,它工作起来很有魅力。勾选“环绕”复选框以获得与当前光标位置无关的结果(否则仅在光标位置被替换后匹配)。确保选择“正则表达式”搜索模式。
正则表达式的意思是:
搜索一个或多个空格(
\s+
),这些空格以逗号((?<=,)
)为前缀,后跟任意数量的任意字符、左大括号和行尾((?=.*{$)
)。使用这个表达式,匹配的只是空格,所以不需要反向引用匹配的任何部分。