天软金融分析.NET函数大全 > TSL函数 > 基础函数 > 字符串 > 正则表达式函数

ParseRegExpr:替换功能    

简述
替换功能,正则表达式匹配后按指定串进行替换。如果操作成功,返回1,并将替换后的结果保存在 Result变量中。
如果匹配不成功或者正则表达式编译错误,则返回字符串类型,为不成功的原因。
定义
ParseRegExpr(RegExpr;ParseText;ParseCtrls:String;      Rstr:String; Var Result:String):Boolean;
参数
名称类型说明
RegExprString字符串类型,正则表达式,基本兼容于Perl 5的正则表达式,查看正则表达式中的元字符
ParseTextString字符串类型。需要被匹配的源串。
ParseCtrlsString字符串类型。正则表达式控制串。,必须包括"r",字符控制定义请参考函数定义中的该参数。
RstrString替换内容的匹配串,支持两种方式
方式 功能 说明 举例
方式一 求值宏的方式 可以是普通自定义的字符串,也可以是根据匹配到的内容进行生成的串 $` $'获得匹配的左边和右边的字符串,,$&或者$0为匹配项,$1,$2,...$99等表示匹配的子项。 比如右边案例中,在没有替换时,$0表示的就是第0列的值如”2011a”,$1表示第1列的值,依此类推。 其中,第0列是被匹配的串,也是原串中需要被替换的串,在替换"2011a"时,$` 则表示原串source中在"2011a"的左边的串,即"ddd",$'表示右边的串即为" uuuu+"。 不替换时的匹配串: source:="ddd2011a uuuu+2012b+zzzz 2013c xxx"; r:=ParseRegExpr("(\\d+)(\\w+)",source,"",s); return s; 进行替换时: source:="ddd2011a uuuu+2012b+zzzz 2013c xxx"; r:=ParseRegExpr("(\\d+)(\\w+)",source,"r","$2$1$`$0TD",result); return result="ddda2011ddd2011aTD uuuu+b2012 uuuu+2012bTD+zzzz c2013+zzzz 2013cTD xxx"; // "$2$1$`$0TD" ?替代项为 第2项+第1项+左串+原项+"TD"
方式二 回调函数 参数为一个数组,即被匹配到的字符串数组,可结合下面的范例理解。回调函数参数中第0项表示第0列,1表示第1列的值... source:="ddd2011a uuuu+2012b+zzzz 2013c xxx"; r:=ParseRegExpr("(\\d+)(\\w+)",source,"r",function(a) begin return 'Flag-'+a[2]+a[1];end,result); return result; //dddFlag-a2011 uuuu+Flag-b2012+zzzz Flag-c2013 xxx
ResultString出参,存放匹配串被替换后的字符串。
返回Boolean1表示操作成功,否则返回匹配或替换失败原因
  • 范例

    范例三:求值宏
    //求值宏,将数字后的字母替换到数字前
    source:="ddd2011a uuuu 2012b zzzz 2013c xxx";
    ParseRegExpr("(\\d+)(\\w+)",source,"r","$2$1",s );
    return s;

    //结果:
    ddda2011 uuuu b2012 zzzz c2013 xxx
    范例四:回调函数
    //回调函数,替换匹配串第1位+匹配串+匹配串第二位
    Source:="ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
    ParseRegExpr("(\\d+).*(Tinysoft)",source,"r",function(a) begin return a[1]+a[0]+a[2];end,s);
    return s;
    参考
    正则表达式 
相关