我必须将所有css定义与名称“test”和颜色匹配:灰色。 例如:
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。
请帮助:)
\.test[:a-zA-Z()0-9\s.,]*\{[a-zA-Z:,\s0-1;-]*color[\s:]*gray([a-zA-Z:,\s0-1;-]*)\}
答案 0 :(得分: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;]*)\}
但问题更复杂。在不同的上下文中可能存在任意字符,例如URL,过滤器等。只要你只需要匹配这些非常具体的案例,就应该有效。
答案 1 :(得分:0)
我做了一个相当简单的事:
[^{]*\.test(?:{|[ :.][^{]*{)[^}]*color[ \n\r]*:[ \n\r]*gray *;[^}]*}
这应符合您的规范,但不会捕获任何CSS错误。