我有以下模式:模式匹配的CSS规则
[\{\}].*[\{\}]
用下面的测试字符串(如果需要的话可以提供更多):
}.prop{hello:ars;} //shouldn't match
}#prop{} //should match
}.prop #prop {} //should match
该模式的目的是找到空的CSS规则集。有人可以建议我如何排除与第二组括号之间的字符匹配吗?随着我接近解决方案,我将更新模式。
编辑: 上http://gskinner.com/RegExr/ 这种模式:[\}].*[\{]{1}[/}]{1}
似乎有希望的结果,虽然转移到PHP的原因,我不明白,当它被打破。
编辑: 如果这应该是一个单独的问题,首先道歉。 在PHP中使用的第一编辑模式:
$pattern = "/[\}].*[\{]{1}[/}]{1}/";
preg_match_all ($pattern, $new_css, $p);
print_r($p);
当$ new_css是包含空的规则集上传的CSS文件的内容的字符串,$ P是从来没有填充。但我知道这种模式是可以的。任何人都可以看到问题是什么?
编辑:最终解决方案
//take out other unwanted characters
$pattern = "/\}([\.#\w]\w+\s*)+{}/";
//do it twice to beat any deformation
$new_css = preg_replace ($pattern, '}', $new_css);
$new_css = preg_replace ($pattern, '}', $new_css);
为什么'\ {\ S * \}'不行? – amon 2012-07-18 16:07:01
我想要得到的类/ ID等以及括号 – 2012-07-18 16:14:23
去年我做了一些类似的PHP与.css文件,删除所有评论,标记文本和检测到的所有颜色定义。所以我也很好奇,如果有人会帮助你找到一些解决方案。 – Stano 2012-07-18 16:30:25