首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与普通SQL语法匹配的正则表达式?

与普通SQL语法匹配的正则表达式?
EN

Stack Overflow用户
提问于 2008-09-26 14:38:08
回答 13查看 29K关注 0票数 17

上周,我正在为生成一些SQL语句的代码编写一些Unit测试。

我试图找出一个正则表达式来匹配SELECTINSERTUPDATE语法,这样我就可以验证我的方法是否生成了有效的SQL,经过3-4个小时的搜索和处理各种regex编辑器之后,我放弃了。

我设法得到了部分匹配,但是由于引号中的节可以包含任何字符,所以它会迅速展开以匹配整个语句。

任何帮助都会很感激,我不太擅长正则表达式,但我想了解更多关于正则表达式的信息。

顺便说一句,我要找的是C# RegEx。

澄清

我不想访问数据库,因为这是单元测试的一部分,我也不需要维护数据库来测试我的代码。可能比项目的寿命更长。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-09-26 15:04:30

正则表达式只能匹配语言,只有有限的状态自动机才能解析,这是非常有限的,而SQL是语法。可以证明您不能用regex.sql来验证。因此,可以停止尝试。

票数 39
EN

Stack Overflow用户

发布于 2008-09-26 20:42:04

SQL是一个类型-2语法,它太强大了,不能用正则表达式来描述。这就像您决定生成C#代码,然后在不调用编译器的情况下验证它一样。一般来说,数据库引擎过于复杂,不易存根。

尽管如此,你可以试试ANTLR的SQL语法

票数 15
EN

Stack Overflow用户

发布于 2008-09-26 15:07:47

据我所知,这是超越正则表达式和接近黑暗艺术的BnF和编译器。

http://savage.net.au/SQL/

同样的事情发生在那些想要做正确的语法突出显示的人身上。你开始把东西塞进regex,然后你写了一个编译器.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/139926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档