社区
Java SE
帖子详情
正则表达式分析sql代码的问题
kingssq
2008-04-23 04:50:32
我想找到不在括号里面的from,也就是非嵌套查询里面的from,比如可能的sql如下:
select t,((asdf from asdfasdf as)from(aaa))
from
aaa where adf = (select id from adff)
我想得到红色部分的from。
...全文
490
35
打赏
收藏
正则表达式分析sql代码的问题
我想找到不在括号里面的from,也就是非嵌套查询里面的from,比如可能的sql如下: select t,((asdf from asdfasdf as)from(aaa)) from aaa where adf = (select id from adff) 我想得到红色部分的from。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
35 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hyzhx
2008-04-24
打赏
举报
回复
mark
haoxiongok
2008-04-24
打赏
举报
回复
要分,呵呵
kingssq
2008-04-24
打赏
举报
回复
算了,没有办法了,用java写个方法算了。。。
结贴,感谢大家。
kevinchj
2008-04-24
打赏
举报
回复
^……
来晚了……
haoxiongok
2008-04-24
打赏
举报
回复
帮楼主顶下
scgjq
2008-04-24
打赏
举报
回复
***************************************************************************
思想决定行动,加入程序员在深圳QQ群,参加技术思想碰撞
专业分类:
程序员在深圳JAVA群4247660
程序员在深圳c++群15195967
程序员在深圳.NET群Ⅱ:12203296
程序员在深圳TCP/IP协议栈开发:16956462
程序员在深圳JS & AJAX群:12578377
程序员在深圳英语学习群:23864353
深序员在深圳VB:11055959
程序员在深圳c++Ⅱ17409451
程序员在深圳c++群15195967
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422
不限专业分类:
高级群:17538442
第三群:2650485
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807
深圳程序员QQ群联盟成立两年多,拥有三十个以上的QQ群,人数达二千多人,有30%以上的成员的经验丰富的老手,包括国内外顶级大公司的成员(如微软、IBM,SUN,华为)、国内著名高校和研究院成员,和有丰富实践经验的高级程序(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入式操作系统),还有少数女程序员。现推介如下QQ群,如有兴趣速速加入:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪6K以下的别加入) c++:15195967 .NET:12203296 mobile:31501597嵌入式:37489763 JAVA:4247660
——————————————————————————————————————————
希望大家不要认为群能给你带来什么,这只是一个平台,让同等水平的程序员有个交流的机会或许能得到一点信息或许能带来一点启发。
*****************************************************************************
scgjq
2008-04-24
打赏
举报
回复
***************************************************************************
思想决定行动,加入程序员在深圳QQ群,参加技术思想碰撞
专业分类:
程序员在深圳JAVA群4247660
程序员在深圳c++群15195967
程序员在深圳.NET群Ⅱ:12203296
程序员在深圳TCP/IP协议栈开发:16956462
程序员在深圳JS & AJAX群:12578377
程序员在深圳英语学习群:23864353
深序员在深圳VB:11055959
程序员在深圳c++Ⅱ17409451
程序员在深圳c++群15195967
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422
不限专业分类:
高级群:17538442
第三群:2650485
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807
深圳程序员QQ群联盟成立两年多,拥有三十个以上的QQ群,人数达二千多人,有30%以上的成员的经验丰富的老手,包括国内外顶级大公司的成员(如微软、IBM,SUN,华为)、国内著名高校和研究院成员,和有丰富实践经验的高级程序(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入式操作系统),还有少数女程序员。现推介如下QQ群,如有兴趣速速加入:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪6K以下的别加入) c++:15195967 .NET:12203296 mobile:31501597嵌入式:37489763 JAVA:4247660
——————————————————————————————————————————
希望大家不要认为群能给你带来什么,这只是一个平台,让同等水平的程序员有个交流的机会或许能得到一点信息或许能带来一点启发。
*****************************************************************************
kingssq
2008-04-24
打赏
举报
回复
还是有问题,郁闷。。。
name99_6
2008-04-24
打赏
举报
回复
关注....
kingssq
2008-04-24
打赏
举报
回复
我的最后正则表达式:
from(?!([^()]*(\([^()]*\)[^()]*)*\)))
kingssq
2008-04-24
打赏
举报
回复
因为这个正则要用到实际项目中去,所以想谨慎一点。。
kingssq
2008-04-24
打赏
举报
回复
搞了许久,我认为这里不需要用到递归,大家可能想复杂了。
我的思路是去找from后面括号的规律,即from后面的括号不能是这样一种情况:
右括号比左括号多一个
所以可以用(?!exp)来进行匹配。
右括号比左括号多一个的表达式: (\([^()]*\))*\)
所以符合要求的正则为:from(?!(\([^()]*\))*\))
我目前发现它似乎没有什么问题?希望大家帮忙提点意见,谢谢了。
云上飞翔
2008-04-24
打赏
举报
回复
[Quote=引用 17 楼 joejoe1991 的回复:]
无限嵌套又怎么办哪?我认为正则表达式做不到。。
[/Quote]
答:
1)“无限嵌套,正则表达式做不到”,完全正确。不要再费心了。
2)但楼主的问题怎么解决呢?
方法之一:楼主退一步,给出一个实用性限制:
如:括号嵌套最多不超过30层
(实用时,也许够用了),这时,正则表达式就能写了。
方法之二:楼主必须要无限嵌套,那只能另外写程序了,还要程序也不复杂。
以上仅供你参考。
goodmrning
2008-04-23
打赏
举报
回复
顶上去.关注......
goodmrning
2008-04-23
打赏
举报
回复
顶上去.关注......
goodmrning
2008-04-23
打赏
举报
回复
顶上去.关注......
火龙果被占用了
2008-04-23
打赏
举报
回复
正则表达式不能处理嵌套结构的,这在正则表达式中是个规矩,而且这个规矩以后也不会改
变的。
由于 Java 的正则表达式不支持递归结构,除非知道嵌套的层数,根据嵌套的层数动态生成
表达式进行匹配,这样是比较复杂的。
kingssq
2008-04-23
打赏
举报
回复
真是没有办法吗?
在这里先谢谢各位了。
后天结贴吧,到时候还没有结果就认为是正则解决不了吧。。
joejoe1991
2008-04-23
打赏
举报
回复
无限嵌套又怎么办哪?我认为正则表达式做不到。。
kingssq
2008-04-23
打赏
举报
回复
如13楼所说,后面多套几层括号就不行了。
不过火老大的思路很清晰,让我不要考虑前面了。。
加载更多回复(15)
用
正则表达式
提取
SQL
NULL 博文链接:https://duanhengbin.iteye.com/blog/1962431
SQL
语法
分析
,
正则表达式
解析C#文件;
正则表达式
实现的语法
分析
引擎
一些资料关于
SQL
语法
分析
;用
正则表达式
解析C#文件;使用
正则表达式
实现的语法
分析
引擎(C#源
代码
) ;
SQL
Server 2005
正则表达式
使模式匹配和数据提取变得更容易;
sql
_server
正则表达式
收集了大部分的
正则表达式
的使用方法,请赶紧下载哦!!!
使用Java
正则表达式
分析
处理日志
NULL 博文链接:https://lfl2011.iteye.com/blog/2031013
SAP ABAP
正则表达式
Regular expressions
Regular expressions are a powerful tool for processing text-based information effectively and efficiently. The Regex Toy is a small, interactive tool aimed at ABAP developers who want to test their regular expressions quickly. It improves upon similar tools available on the Web by reflecting specifically the semantics of regular expressions in ABAP.
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章