Alk*_*ris 5 regex expression jsoup
我正在开发一个项目,用户使用AND OR运算符输入人类可读的搜索字符串.我举三个例子
以上是我可能获得的输入样本.我想获取该输入并将其转换为正则表达式.这不是编译器的样本吗?看着它,我看到我想要做的是将高级命令转换为低级命令.您对我如何完成上述工作有什么建议吗?我想要的是,将正在生成的正则表达式传递给jsoup(伪选择器:matchesOwn)并查询html文档.谢谢您的帮助.
这样做的一般方法是以易于遍历的数据结构的形式进行中间表示.这通常称为AST.如果您不熟悉这个概念,请查看计算器语言中的计算器 - ast.
为了将用户输入字符串转换为AST,您需要使用解析器.你可以看一下antlr.我个人使用v3,v4似乎不太成熟.看看antlr3.org.如果你想自己编写解析器,你可以一个pratt解析器.这不是微不足道的,并且结合良好的错误处理需要时间,但它可以是一个有趣的练习.
一旦你有了AST,把它变成一个正则表达式应该是平凡的,通过遍历AST并输出字符.
祝好运!