[正则优化] CSS属性选择符的匹配
正则表达式如下
[s*((?:[wu00c0-uFFFF-]|\.)+)s*(?:(S?=)s*([‘"]*)(.*?)3|)s*]
这个正则表达式的作用是用来匹配CSS属性选择符,例如:
/*能匹配成功的*/
[class=’abcdefg-abcdefg’]
/*匹配失败的*/
[class=’abcdefg-abcdefg’
成功匹配的过程如下:
正则表达式如下
[s*((?:[wu00c0-uFFFF-]|\.)+)s*(?:(S?=)s*([‘"]*)(.*?)3|)s*]
这个正则表达式的作用是用来匹配CSS属性选择符,例如:
/*能匹配成功的*/
[class=’abcdefg-abcdefg’]
/*匹配失败的*/
[class=’abcdefg-abcdefg’
成功匹配的过程如下:
上一文《正则优化一则:CSS选择符匹配》中说到了如何优化一个正则在匹配成功时的效率,而实际上正则匹配有成功就会有失败,因此失败时的效率也是需要注意的。继续上文中的正则,分析了一下优化前和优化后表达式失败时的效率:
匹配文本:.a select,.b input,.b input[
正则表达式如下
^((^|,)s*[.w-][.ws->+~]*)+$
这个正则表达式的作用是用来匹配一些简单的CSS选择符,例如:
/*能匹配成功的*/
.a select,.b input,.b input
.a select,div.test > a,.b input
/*匹配失败的*/
.a select,.b input,.b input[type="submit"]
该表达式在匹配成功时的效率还是比较高的,因为里面使用了字符集进行贪婪匹配,接下来以匹配 ".a select,.b input,.b input " 这个文本来具体分析一下它的效率问题,具体的匹配过程见下图