我想解析这个
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
和正则表达式的其他变化。 有人知道如何正确地做到这一点吗?
提前致谢。
编辑:我尝试在一个lexer规则中投入所有正则表达式符号和字符,如此
REGEX: ( DIV | ('i') | ('@') | ('[') | (']') | ('+') | ('.') | ('*') | ('-') | ('\\') | ('(') | (')') |('A') |('w') |('a') |('z') |('Z')
//|('w')|('a'));
然后制作一个像这样的解析器规则:
regex_assignment: (REGEX)+
但存在识别错误(无关输入)。这绝对是因为以前在其他规则中使用过这些标志。
事实上,我实际上并不需要处理这些正则表达式分配,我只是希望它能够正确识别而不会出错。在ANTLR中有没有人有这种方法?对我来说,一个解决方案就足够了,只需将其识别为正则表达式并跳过它就可以了。例如。
答案 0 :(得分:0)
不幸的是,在ANTLR语法库中还没有正则表达式语法,但是之前出现了类似的问题,例如: Regex Grammar。获得(E)BNF后,您可以将其转换为ANTLR。或者,您可以使用BNF语法检查自己的语法规则,以查看它们是否已正确定义。简单地将所有可能的输入字符放在一个规则中就不会起作用。