我这样做是为了教学目的(构建一个教学数据库;构建它的一部分,就像成熟的数据库一样;这是一个非常简单的查询解析器。)
我正在尝试使用正则表达式解析简单的“选择”语句。它适用于大多数简单的情况,但我在选择表格之间留有空格的平衡中失去了它(从a,b;),允许 from 和 terminator 之间有无限的空格;,并允许可选的限流器“where" 之间的空格不受限制从 a,b 到哪里 and ;
这是正则表达式:
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 ;
可用于正则表达式101 https://regex101.com/r/bBFgrO/3与单元测试。