正规表达式 在查找替换中的使用 一个看类似变态问题的解决

5 篇文章 0 订阅
4 篇文章 0 订阅
 

有一个网站内有300百多个Asp文件,每个文件里几处到几十处不等的SQL语句
由于原来的是Access数据库,现在要改为SQL数据库,有些晕法要做相应修改
如: 
select * from gongqiu where gqname ='"&trim(rsad("gqname"))&"' and gqlei = '供应信息' and flag = true"
select * from xinyao where xlxrname ='"&trim(rsad("xlxrname"))&"' and flag = true"
...等等
要把其中的 flag=true 修改成 flag='已审核'

对于上面的要求通过正常的查找替换不容易实现
如: var flag=true; 中也有flag=true;但这是JS脚本中的,不应该替换,在面对这种情况时 正规表达式 就可以派上用场了.

处理方法如下(用的是 DreamWeaver)
正规表达式如下(标记A)
(select|update|delete|inserte)(.*)((daili)|(gongqiu)|(zhanhui)|(zhaoshang)|(xinyao))(.*flag = )(true)(.*)
替换表达式
$1$2$3$9'已审核'$11

说明:
daili,gongqiu 是数据库里的表名
$1,$2...$11 是匹配成功的段
如有 "my name is Liang xin jian" , reg=/(S+)(s+)(S+)/ 则匹配成功时 $1对应my,$2对应 空格,$3 对应 name
因为这段话有六个单词五个空格,这样会匹配成功3,第2次时 $1对应 is ,$2对应 空格,$3对应Liang ......

另外(标记A)中的匹配段有11个,
标记段的计算是按括号个数来计算的如
(a)(b)(c)会对应$1$2$3
(a) (b) (( (c) (d) ) | (e))对应 $1,$2,$3,$4,$5,$6,$7 这个是按最大匹配原则来的.
学过数据结构的应该很好理解,以前多的+-*/表达式求值就才用这种方式来处理括号的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值