Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证CSS选择器的正则表达式_Java_Regex_Css Selectors - Fatal编程技术网

Java 验证CSS选择器的正则表达式

Java 验证CSS选择器的正则表达式,java,regex,css-selectors,Java,Regex,Css Selectors,什么是可以用来验证CSS选择器的正则表达式,并且可以以一种无效选择器快速停止的方式进行验证 有效选择器: EE #myid .class .class.anotherclass EE .class EE .class EEE.anotherclass EE[class="test"] .class[alt~="test"] #myid[alt="test"] EE:hover EE:first-child E[lang|="en"]:first-child EE#test .class>.

什么是可以用来验证CSS选择器的正则表达式,并且可以以一种无效选择器快速停止的方式进行验证

有效选择器:

EE
#myid
.class
.class.anotherclass
EE .class
EE .class EEE.anotherclass
EE[class="test"]
.class[alt~="test"]
#myid[alt="test"]
EE:hover
EE:first-child
E[lang|="en"]:first-child
EE#test .class>.anotherclass
EE#myid.classshit.anotherclass[class~="test"]:hover
EE#myid.classshit.anotherclass[class="test"]:first-child EE.Xx:hover
无效的选择器,例如,在行尾包含额外的空格:

EE:hover   EE
EE .class EEE.anotherclass 
EE#myid.classshit.anotherclass[class="test"]:first-child EE.Xx:hov     9
EE#myid.classshit.anotherclass[class="test"]:first-child EE.Xx:hov  -daf

正则表达式是错误的工具。CSS选择器是一种复杂的方法。 例如:

bo\
dy:not(.\}) {}

将解析器与真正的标记器一起使用,如下所示:。将其重写为Java比正确使用正则表达式更容易

正则表达式是错误的工具。CSS选择器是一种复杂的方法。 例如:

bo\
dy:not(.\}) {}

将解析器与真正的标记器一起使用,如下所示:。将其重写为Java比正确使用正则表达式更容易

典型正则表达式的问题是它们无法处理任意级别的嵌套。他们没有记忆。考虑一个字符串的某个数,后面跟着B的相同数目:<代码> AAABBB < /代码>和一个合理的ReXEP <代码> A*B*<代码>。当regexp到达第一个“b”时,它没有内存它识别了多少个a,因此它无法识别相同数量的b


现在将a和b替换为
如果
结束
等。。。您可以看到这个问题。

典型正则表达式的问题是它们无法处理任意级别的嵌套。他们没有记忆。考虑一个字符串的某个数,后面跟着B的相同数目:<代码> AAABBB < /代码>和一个合理的ReXEP <代码> A*B*<代码>。当regexp到达第一个“b”时,它没有内存它识别了多少个a,因此它无法识别相同数量的b


现在将a和b替换为
如果
结束
等。。。您可以看到问题所在。

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

[+>~, ]?\s*(\w*[#.]\w+|\w+|\*)+(:[\w\-]+\([\w\s\-\+]*\))*(\[[\w ]+=?[^\]]*\])*([#.]\w+)*(:[\w\-]+\([\w\s\-\+]*\))*
标记化后,我使用修剪功能删除额外的空格,例如:

表达方式:

EE.class      EE#id.class
代币:

EE.class

   EE#id.class
修剪后的标记:

EE类

EE#id类

或例如

>EE.class(当它是直接子项时发出警报,然后我处理任何子字符串代码)

其他例程可以检查令牌是否为数字,例如


您可以将其用于测试

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

[+>~, ]?\s*(\w*[#.]\w+|\w+|\*)+(:[\w\-]+\([\w\s\-\+]*\))*(\[[\w ]+=?[^\]]*\])*([#.]\w+)*(:[\w\-]+\([\w\s\-\+]*\))*
标记化后,我使用修剪功能删除额外的空格,例如:

表达方式:

EE.class      EE#id.class
代币:

EE.class

   EE#id.class
修剪后的标记:

EE类

EE#id类

或例如

>EE.class(当它是直接子项时发出警报,然后我处理任何子字符串代码)

其他例程可以检查令牌是否为数字,例如


您可以将其用于测试

您可能可以为此编写RE,但您确定编写语法分析器不会更好吗?我正准备在您的另一个问题上发布答案,但您将其删除。“无效选择器,例如,在行尾包含额外的空格:“那是哪一行?”?我从来没有遇到过CSS解析器(例如,对于CSS文件、样式属性等)出现尾随空格问题。您可能可以为此编写RE,但您确定编写语法解析器不会更好吗?我正要在您的另一个问题上发布答案,但您删除了它。无效的选择器,例如,在行尾包含额外的空白:“那是哪一行?我从未遇到过CSS解析器(例如,CSS文件、样式属性等)这与尾随空格有问题。我记得Jeff Atwood说过,正是出于这个原因,没有用正则表达式编写XML解析器。我只是想问一下具有简单语法的选择器。例如:tag#id.aClass.anotherClass:pseudo class[matching=“element”]。可以提供第二个选择器,但只要有一个或多个选择器,您就不关心了。我记得Jeff Atwood说过,正是出于这个原因,没有用正则表达式编写XML解析器。我只是想问一下具有简单语法的选择器。示例:tag#id.aClass。另一个类:pseudo class[matching=“element”]。可以提供第二个选择器,但只要有一个或多个选择器,您就不在乎。