我对解析正则表达式感兴趣(不要与使用正则表达式进行解析混淆)。Java 1.6 正则表达式(或其他语言)是否有 BNF?
[注意:有一个类似的旧问题没有导致 Java 的答案。]
编辑解释为什么我需要这样做。我们正在为自然语言处理实现一个浅解析器,它首先识别和标记标记。然后使用正则表达式进一步处理这些。我需要知道正则表达式捕获了哪些组(自动机只捕获每个括号的最后一个),我还想用注释对正则表达式进行注释。
在这里,他们指出了在 BNF 中描述 Perl 正则表达式的尝试:
http://www.cs.sfu.ca/~cameron/Teaching/384/99-3/regexp-plg.html
http://www.faqts.com/knowledge_base/view.phtml/aid/25718/fid/200
我没有看到专门针对 java 1.6 的;但这是一个开始,也许你可以从以下位置构建一个完整的 BNF:
http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/wd/regexp.html#RegularExpressionBNF
...使用模式的 java 1.6 文档:
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html
根据 SO 回复,似乎没有明确的正则表达式。