首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

麻烦各位看看,这个正则如何了,不是想要的效果,很奇怪~

2012-02-11 
麻烦各位看看,这个正则怎么了,不是想要的效果,很奇怪~~就这么多分了,请各位帮帮忙~~~为什么结果是:select

麻烦各位看看,这个正则怎么了,不是想要的效果,很奇怪~~
就这么多分了,请各位帮帮忙~~~

为什么结果是:
select Count(*) ME from ART a, ART_CLS c where a.CLS_ID=c.ID 

而不是:
select Count(*) from ART a, ART_CLS c where a.CLS_ID=c.ID


这是代码,直接执行就行:

VB code
str = "select a.*, c.NAME from ART a, ART_CLS c where a.CLS_ID=c.ID order by a.ID desc"Set regEx = New RegExpregEx.Global     = TrueregEx.IgnoreCase = TrueregEx.Pattern = "(Select)([^From]*)([\s\S]*)"sql=regEx.Replace(str,"$1 Count(*) $3")regEx.Pattern = "([^order]*)(order\s*by\s*[^\s]*\s*[asc|desc]*)(\s*[,]?\s*[^\s]?\s*[asc|desc]?)*([\)]*)$"sql=regEx.Replace(sql,"$1$4")response.write sql


[解决办法]
[] 里面的字符串会一个个拆开的,不成看成一个整体,即使加()也不行,
你regEx.IgnoreCase = True
所select a.*, c.NAM
前面到A就匹配完([^From]*)了,后面是([\s\S]*)的

试一下这样
regEx.Pattern = "(Select)(.*?=from)([\s\S]*)" 我这边没ASP环境,不知道ASP的正则具体有什么差别,但按照思路你应该可以写得出来的。
[解决办法]
regEx.Pattern = "(Select)((?!From).*?)(from [\s\S]*)"

同没ASP环境 不过这个在C#环境下是测试通过的

热点排行