Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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 从正则表达式构建树_Java_Regex - Fatal编程技术网

Java 从正则表达式构建树

Java 从正则表达式构建树,java,regex,Java,Regex,我需要构建表示Java正则表达式的树java.util.regex.Pattern执行此任务,但是它的根字段和节点内部类(及其子类)不可见,因此我无法访问它们。我必须编写自己的解析器并重新实现所有解析逻辑?您可以使用这些私有字段,或者使用现有的regex/PCRE解析器:。请注意,PCREParser库(我是其作者)从未进行过真正的(单元)测试:因此,如果您计划在生产代码中使用它,请对其进行一些适当的单元测试!:) 谢谢您的回答,但我需要严格遵守Java正则表达式方言。例如,基于ANTLR的库与

我需要构建表示Java正则表达式的树
java.util.regex.Pattern
执行此任务,但是它的
字段和
节点
内部类(及其子类)不可见,因此我无法访问它们。我必须编写自己的解析器并重新实现所有解析逻辑?

您可以使用这些私有字段,或者使用现有的regex/PCRE解析器:。请注意,PCREParser库(我是其作者)从未进行过真正的(单元)测试:因此,如果您计划在生产代码中使用它,请对其进行一些适当的单元测试!:)

谢谢您的回答,但我需要严格遵守Java正则表达式方言。例如,基于ANTLR的库与regex
“[a |]”
不正确匹配,将
“|”
解释为OR运算符。反射可能是唯一可行的解决方案。@Manuel,它很好地匹配了它(不匹配它意味着不匹配异常或类似情况)。诚然,我不会在字符类内更改元字符的令牌类型,如
|
*
+
等。这将导致大量的嵌入式代码。之后遍历树并更改
CHAR_类
树的所有子标记的类型是很简单的:输入
“[a |]”“
被正确解析到树中:
^(CHAR_类“a”|”)
。无论如何,反射可能仍然是更好的选择,当然!:)