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

本文介绍如何使用正则表达式在DreamWeaver中批量修改300多个ASP文件中的SQL语句,将flag=true替换为flag='已审核',避免误替换JS脚本中的flag=true。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

有一个网站内有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 这个是按最大匹配原则来的.
学过数据结构的应该很好理解,以前多的+-*/表达式求值就才用这种方式来处理括号的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值