需要一个正则表达式来修剪包含所有值的css文件,只需保留选择器即可

需要一个正则表达式来修剪包含所有值的css文件,只需保留选择器即可,css,regex,expression,Css,Regex,Expression,以前有这个但丢了。有人能帮忙吗 这是一个简短的reg表达式,我将它粘贴到TextMates search replace中,以这种方式修剪css文件 它查找{}之间的所有文本并将其删除 selector { value: blah; } 变成 selector {} 这样我就可以清理出一个css文件,为从头开始创建主题做好准备 感谢找到{}之间的所有文本并将其删除,下面的内容可以使用(python) 但如果您需要复杂的css解析器,您更愿意搜索css解析器。要查找{}之间的所有文本并将其删除

以前有这个但丢了。有人能帮忙吗

这是一个简短的reg表达式,我将它粘贴到TextMates search replace中,以这种方式修剪css文件

它查找{}之间的所有文本并将其删除

selector { value: blah; }
变成

selector {}
这样我就可以清理出一个css文件,为从头开始创建主题做好准备


感谢

找到{}之间的所有文本并将其删除,下面的内容可以使用(python)


但如果您需要复杂的css解析器,您更愿意搜索css解析器。

要查找{}之间的所有文本并将其删除,可以使用以下方法(python)

但是,如果您需要复杂的css解析器,您更愿意搜索css解析器。

模式“{.*?}”的意思是“大括号后面跟尽可能短的字符串,后面跟紧大括号”

如果您使用的正则表达式匹配器不理解贪婪和非贪婪(“*”是贪婪的,“*?”是非贪婪的),则可以使用类似“{[^}]*}”的模式,这意味着“大括号后面跟零个或多个字符,而不是紧大括号,后面跟紧大括号”

请注意,这并不是万无一失的——如果在定义中使用了右大括号,则会出现错误。唯一的解决方法是使用真正的.css解析器

如果要捕获大括号之间的数据,则需要在大括号内的图案部分周围添加括号,例如:“{(.*)}”,它将捕获除大括号以外的所有内容

模式“{.*?}”意味着“大括号后面紧跟着尽可能短的字符串,后面紧跟着大括号”

如果您使用的正则表达式匹配器不理解贪婪和非贪婪(“*”是贪婪的,“*?”是非贪婪的),则可以使用类似“{[^}]*}”的模式,这意味着“大括号后面跟零个或多个字符,而不是紧大括号,后面跟紧大括号”

请注意,这并不是万无一失的——如果在定义中使用了右大括号,则会出现错误。唯一的解决方法是使用真正的.css解析器


如果要捕获大括号之间的数据,则需要在大括号内的图案部分周围添加括号,例如:“{(.*)}”,它将捕获除大括号以外的所有内容

如果样式表相当复杂,CSS解析器就非常必要。在很多边缘情况下,样式规则中可能会出现一个右大括号,无论是字符串(在规范中定义为不需要分隔符)、@media group还是一些特定于浏览器的hack。是的,绝对正确。正确的答案应该是css解析器,但我以前没有使用过css解析器,所以很难建议哪一个是合适的。有人知道合适的css解析器吗?已经没有用了。你可以先尝试搜索,如果没有用,就提出一个新问题,询问css解析器,还请提及语言。如果样式表稍微复杂,css解析器是非常必要的。在很多边缘情况下,样式规则中可能会出现一个右大括号,无论是字符串(在规范中定义为不需要分隔符)、@media group还是一些特定于浏览器的hack。是的,绝对正确。正确的答案应该是css解析器,但我以前没有使用过css解析器,所以很难建议哪一个是合适的。有人知道合适的css解析器吗?已经没有用了。你可以先尝试搜索,如果没有用,请提出一个新问题并询问css解析器,还请提及语言。看起来与我之前运行的类似,但实际上不起作用。我运行它,它什么也不返回。@Gavin:这个答案中的表达式只匹配开始括号和结束括号之间的所有内容。我的假设是,如果您可以匹配它,那么您可以轻松地替换与{}匹配的内容,但这取决于您使用的工具。您说您正在使用textmate,但问题中不清楚您是否需要特定于textmate的答案。如果是这样,您可能希望添加textmate作为标记,并明确询问“如何在textmate中替换此expressin”@Gavin:我不使用textmate,根据扫描文档的猜测,您需要在要替换的模式部分周围加上括号(例如:{(.*))然后替换为空字符串。看起来与我之前运行的类似,但实际上不起作用。我运行它,它什么也不返回。@Gavin:这个答案中的表达式只匹配开始括号和结束括号之间的所有内容。我的假设是,如果您可以匹配它,那么您可以轻松地替换与{}匹配的内容,但这取决于您使用的工具。您说您正在使用textmate,但问题中不清楚您是否需要特定于textmate的答案。如果是这样,您可能希望添加textmate作为标记,并明确询问“如何在textmate中替换此expressin”@Gavin:我不使用textmate,根据扫描文档的猜测,您需要在要替换的模式部分(例如:{(.*))周围加上括号,然后用空字符串替换。
>>> re.sub("(\w+)\s*\{.*?\}","\\1 {}","""selector { value: blah; }""")
'selector {}'