正则表达式一:
c_address = sAddress,
c_zipcode = sZipcode,
c_phone = sPhone,
c_faxno = sFaxno,
c_email = sEmail,
c_mobileno = sMobileno,
c_bp = sBP,
c_birthday = sBirthday,
如何用正则表达式将以上结果替换为:
'c_address',
'c_zipcode',
'c_phone',
'c_faxno',
'c_email',
'c_mobileno',
'c_bp',
'c_birthday',
首先,有一个“=”可以让我们将左边部分截取出来:
(.*)(=.*),\n
然后,由于等号之前有部分空格,需要将此部分空格也过滤掉:
尝试(.*)( *=.*),\n
但是由于表达式的第一部分.*已经将空格包含进去,所以无法在第二部分中取到空格。于是考虑在第一部分中过滤掉空格:
([^ |.]*)( *=.*),\n
这样就可以完整的将左边部分(不含空格)的字符串取出。然后替换:
'\1',\n
以上是Editplus中的正则表达式语法。不过与vim和shell中的语法还是非常类似的。
再写一个:
sSuccessFlag := fillBlank (sSuccessFlag, 1);
sFailInfo := fillBlank (sFailInfo, 46);
sReserve3 := fillBlank (sReserve3, 40);
sAddress := fillBlank (sAddress, 200);
sZipcode := fillBlank (sZipcode, 6);
sPhone := fillBlank (sPhone, 40);
sFaxno := fillBlank (sFaxno, 40);
sEmail := fillBlank (sEmail, 100);
以上每行,如何替换成:
sEmail := substrb(sEmail,1,100);
这样的字符串,可以用如下语句:
(.*) := (.*), ([0-9]*).*;
替换目标:
\1 := substrb(\1,1,\3)
即可。
正则表达式二:
有如下建表语句:
n_netvalue_id number(38) primary key not null, --对象id
c_fundcode varchar2(38) not null, --证券id(基金帐号)
c_bulletin_day varchar2(8), --公告日期
c_expire_date varchar2(8), --截止日期
f_netvalue number(20,4), --单位净值
f_cml_netvalue number(20,4), --累计单位净值
f_property number(20,4), --资产净值
现在,要将以上格式的注释转成comment语句的形式,该如何?
首先,基本的思路是将每行分成三个部分:
字段名、字段类型及约束或主键参数、注释部分。
按照这个思路,
第一部分则可以这样:(^[^ ]*)
这句话的意思是找出第一个不含空格的字符串,该字符串不能以空格开头。
第二部分,比较麻烦,因为空格和非空格的字符串有可能交替出现,匹配的思路是找出任意个空格开始的、且以任意个空格结尾的,中间含有任意字符的字符串,按照这个模式,就有以下表达式:([ ]*.*[]*)。
第三部分就简单了,只要这样:--(.*),即找出--后的所有字符。
合并起来就是这样:(^[^ ]*)([ ]*.*[ ]*)--(.*)
试试看吧!:D......
注意:以上正则表达式在Editplus下面测试通过。