0

我必须匹配名称为“test”和颜色:灰色的所有 css 定义。例如:

a.test { color:grey; } 但也 .test { color:grey;}a.test:affter, a.test { font-size: 10px; color: gray;}

所以它必须照顾多个\s\r\n和其他人。

我已经得到的:

test(\s|\r|\n|[:a-zA-Z()0-9])*\{([a-zA-Z:,\s\n\r-0-1;]*)color[\s\n\r:]*gray([a-zA-Z:,\s\n\r-0-1;]*)\}

但它在某些地方不起作用:http ://regexr.com?32191 。

请帮忙 :)


@nhahtdh 的解决方案,最适合我

\.test[:a-zA-Z()0-9\s.,]*\{[a-zA-Z:,\s0-1;-]*color[\s:]*gray([a-zA-Z:,\s0-1;-]*‌​)\}

4

2 回答 2

0

此正则表达式匹配您的测试用例。

[^\r]*\.test(\s|\r|\n|[:a-zA-Z()0-9])?[^{]*\{([a-zA-Z:,\s\n\r-0-1;]*)color[\s\n\r:]*gray([a-zA-Z:,\s\n\r-0-1;]*)\}

http://regexr.com?32197

不过这个问题要复杂得多。在不同的上下文中可能存在任意字符,例如 url、过滤器等。只要您只需要匹配这些非常具体的情况,它应该可以工作。

于 2012-09-03T13:35:18.977 回答
0

我做了一个相当简单的:

[^{]*\.test(?:{|[ :.][^{]*{)[^}]*color[ \n\r]*:[ \n\r]*gray *;[^}]*}

这应该符合您的规范,但不会捕获任何 CSS 错误。

http://regexr.com?321ah

于 2012-09-03T13:37:27.680 回答