社区
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。
...全文
459
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
语法
分析
,
正则表达式
解析C#文件;
正则表达式
实现的语法
分析
引擎
一些资料关于
SQL
语法
分析
;用
正则表达式
解析C#文件;使用
正则表达式
实现的语法
分析
引擎(C#源
代码
) ;
SQL
Server 2005
正则表达式
使模式匹配和数据提取变得更容易;
php防止
sql
注入示例
分析
和几种常见攻击
正则表达式
主要介绍了php防止
sql
注入漏洞
代码
和
分析
,最近提供了几种常见攻击的
正则表达式
,大家参考使用吧
PHP防止
SQL
注入与几种
正则表达式
讲解
注入漏洞
代码
和
分析
代码
如下: <?php function customerror($errno, $errstr, $errfile, $errline) { echo error number: [$errno],error on line $errline in $errfile; die(); } set_error_handler(customerror,e_error); $getfilter='|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|< \s*script\b|\bexec\b|unio
php中常见的
sql
攻击
正则表达式
汇总
本文实例讲述了php中常见的
sql
攻击
正则表达式
。分享给大家供大家参考。具体
分析
如下: 我们都已经知道,在MY
SQL
5+中 information_schema库中存储了所有的 库名,表明以及字段名信息。故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_
sql
i是假设已知的库名。 注:
正则表达式
中 ^[a-z] 表示字符串中开始字符是在 a-z范围内 复制
代码
代码
如下:index.php?id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA=”blind_
sql
i”
My
SQL
中使用replace、regexp进行
正则表达式
替换的用法
分析
本文实例讲述了My
SQL
中使用replace、regexp进行
正则表达式
替换的用法。分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于“./uploads/110100_cityHotel_北京富豪华宾馆.jpg”这样的格式都修改为“./uploads/110100cityHotel北京富豪华宾馆.jpg”这样的格式。我本人是没有这样处理过数据的,但是我知道my
sql
是可以使用replace做到的,而且
正则表达式
也可以做到。 如何做呢? 我们只需要这样一条语句即可,
代码
如下:update master_data.md_employee set name=repl
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章