通常,人们会使用正则表达式将其他内容解析为 AST。我正在寻找的是一种工具,可用于将正则表达式本身解析为 AST,然后我可以对其进行符号操作。假设我有一个像
(c(o)w)/(.*?)/omg
我希望能够提出类似的问题
- 有多少个捕获组?
- 有嵌套组吗?
- 正
.
则表达式中的第 10 个字符是否位于捕获组的开头?
并且能够以某种有意义的方式操作正则表达式,例如:
- 获取所有命名组的名称
- 将所有命名组替换为未命名组
- 将任何嵌套组展平为其最外层的封闭组
在将其序列化回字符串之前。
我已经四处看了看java.util.regex.Pattern
,但它的内部都是私有的,所以我无权访问它们。我可以使用任何第三方库来执行此操作吗?