0

我有一个用太多引用编写的 CSS,我想在标题工作之前删除这些引用。

例如,我想改变这个:

#x #y #header, #s #t #header{}
#header #a #b, #t #header{}
#k, #l,#x #y #header{}

这是我期待的输出:

#header, #header{}
#header #a #b, #header{}
#header{}

我在 RegexPal 中尝试了这段代码,但没有取得多大成功:

(.*)(?=#header)

我想删除 #header 之前出现的所有元素,我可以多次搜索和查找,但是这个正则表达式正在做的是检查最后一个 #header 而不是第一个,例如这个正则表达式输出是:

#header{}
#header{}
#header{}
4

1 回答 1

1

使用非贪婪匹配,然后看看后面:

(?<=^|,).*?(?=#header)

请参阅live demo与您的示例文本的不需要的输入匹配的此正则表达式。

解释:

.*是贪婪的 - 它会尽可能多地匹配,可能会跳到#header下一个,但是.*?情愿(也就是非贪婪)并且尽可能少地匹配 - 它不会跳过#header.

(?<=^|,)是在匹配之前断言输入是输入的开头或逗号的后面看 - 它允许在逗号之后进行新的匹配。

于 2013-10-16T12:20:31.140 回答