繁体   English   中英

使用正则表达式解析select语句(用于自定义SQL解析器)

[英]Parsing select statement with regex (for custom SQL parser)

我这样做是出于教学目的(构建教学数据库;构建它的一部分就像完整的数据库一样;这是一个非常简单的查询解析器。)

我试图使用正则表达式解析简单的“选择”语句。 它适用于大多数简单的情况,但我在选择表( 从a,b; )之间允许空间的平衡失去它,允许从和终止之间的无限空间; ,并允许可选的限制器“ where ”和a,b之间的无限空间where;

这是正则表达式:

select\s(.*)\sfrom(.*)\s(where (.*))?\s;

以下是示例查询:

select a.a,b.b,c from a,b where a.a = b.a;

select a.a,b.b,c from a,b;

select a.a,b.b,c from a,b ;

select a.a,b.b,c from a,b where a.a = b.a  ;

可在regex 101上进行单元测试。

正则表达式select\\s+(.*)\\s+from\\s+(.*)\\s*(where .*)?; 通过了所有测试。 我添加唯一的修改是\\s+ ,而不是一个单一的空间\\s

这适用于提供的示例: select\\s+(.*?)\\s*from\\s+(.*?)\\s*(where\\s(.*?)\\s*)?;

请参见: https//regex101.com/r/sBwpok/3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM