ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 正则表达式记录

正则表达式记录

原创 Linux操作系统 作者:regonly1 时间:2010-03-24 09:26:03 0 删除 编辑


正则表达式一:

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下面测试通过。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-630267/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 聚簇表学习
请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1070277