gpt4 book ai didi

php - 使用正则表达式解析 css

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:27 25 4
gpt4 key购买 nike

我想扫描一个 css 文件并捕获评论和 css。我想出了一个几乎存在的正则表达式,但是它并不完美,因为它错过了具有多个声明的属性,即

ul.menu li a, # Won't capture this line
ul.nice-menu li a { text-decoration: none; cursor:pointer; }

这是我正在使用的正则表达式:

(\/\*[^.]+\*\/\n+)?([\t]*[a-zA-Z0-9\.# -_:@]+[\t\s]*\{[^}]+\})

我一直在 rubular.com 上对此进行测试,这是它当前匹配的内容,以及数组输出的样子。

结果 1

[0] /* Index */
/*
GENERAL

PAGE REGIONS
- Header bar region
- Navigation bar region
- Footer region
SECTION SPECIFIC
- Homepage
- News */

[1] html { background: #ddd; }

结果 2

[0]
[1] body { background: #FFF; font-family: "Arial", "Verdana", sans-serif; color: #545454;}

我必须指出,就正则表达式而言,我仍然是一个新手,所以如果有人可以提供帮助并指出我哪里出错了,我们将不胜感激:)

顺便说一句:我正在使用 PHP 和 preg_match_all

最佳答案

CSS 不能用正则表达式完全解析(参见 CSS 语法:http://www.w3.org/TR/CSS2/grammar.html)。例如,{...} 可以拆分成多行,而您当前的版本无法处理这种情况。如果您需要这样做,您应该阅读 CSS 规范并使用像 ANTLR 这样的工具来生成解析器。

这是 W3C 规范 ( http://www.w3.org/TR/CSS2/syndata.html ) 中的示例:

@import "subs.css";
@import "print-main.css" print;
@media print {
body { font-size: 10pt }
}
h1 {color: blue }

没有一个普通的正则表达式足以处理嵌套的 {...} 等,更不用说导入样式表的内容了。

关于php - 使用正则表达式解析 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com