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

ParseRegExpr    

简述

正则表达式匹配。如果匹配成功,返回1,并将匹配的串以及子匹配组(所有匹配)返回在Matched数组,将匹配的串以及子匹配的位置以及匹配的长度存放在MatchedPos,MatchedLen数组。
如果匹配不成功或者正则表达式编译错误,则返回字符串类型,为不成功的原因。
定义
ParseRegExpr(RegExpr;ParseText;ParseCtrls:String;Var Matched:Array[][] of string;Var MatchedPos;MatchedLen:Array[][] of Integer):Boolean;
参数
名称类型说明
RegExprString字符串类型,正则表达式,基本兼容于Perl 5的正则表达式,查看正则表达式中的元字符
ParseTextString字符串类型。需要被匹配的源串。
ParseCtrlsString字符串类型。正则表达式控制串。采用字符控制,包括如下字符的含义如下:
字符串说明
m起用多行开关,即启用时:按换行符让每行都有起点与终点,否则整个串只有一个起点与终点。
i起用大小写无关开关
b打开NOT_BOL开关(不理会^标志),首行不参与起始位置(^)的匹配,即首行匹配^会失败。当起用多行开关时,带^的匹配串从第二行开始匹配。
e打开NOT_EOL开关(不理会$标志),尾行不参与结束位置($)的匹配,即尾行匹配$会失败。当起用多行开关时,带$的匹配串在最后一行结束位置不参与匹配。
s单匹配模式,匹配到一个符合条件的就结束。
r起用替换开关,起用时,函数定义参考定义二。
MatchedArray,TableArray存放匹配成功的串以及其中的子串。支持求值宏,最大支持$99,$` $
MatchedPosArray,TableArray存放匹配成功的串以及其中的子串所处的位置。
MatchedLenArray,TableArray存放匹配成功的串以及其中的子串的长度。
返回Boolean1表示匹配成功,否则返回匹配失败原因
  • 范例


    匹配数字、指定字符串
    source:="ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
    ParseRegExpr("(\\d+).*(Tinysoft)",source,"",result,MPos,Mlen);
    return result;

    //输出:array(("2011 ShenZhenTinysoft","2011","Tinysoft"))
    //输
    范例一说明:
    结果中返回匹配的源串"2011 ShenZhenTinysoft"以及匹配出来的串"2011"和"Tinysoft"
    1、在匹配串中加中括号()是表示将匹配的结果返回,下面的例子中,要返回的匹配串的内容是(\\d+)和(tinysoft)匹配出来的结果。
    2、\本身就是转义字符,所以要用\\d来表示\d是一个元字符(表示匹配一个数字字符)。\\d+表示匹配多个数字字符。
    3、.表示匹配任意单个字符,除'\n'外。.*表示匹配任意多个单个字符。由于.*没有中括号(),所以匹配的字符不返回。
    4、(Tinysoft)匹配字符串Tinysoft,并将匹配的字符返回。注意,字符大小写敏感。
    范例二:匹配数字、字符串、带括号的字符串
    source:="ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
    ParseRegExpr("(\\d+).*(Tinysoft) (\\(\\w+\\))",source,"",result,MPos,Mlen);
    return result;
    //输出:array(("2011 ShenZhenTinysoft (TSL)","2011","Tinysoft","(TSL)"))

    范例二说明:
    与范例一相比,新增了对()的匹配。
    结果中返回匹配的源串"2011 ShenZhenTinysoft (TSL)"以及匹配出来的串"2011"、"Tinysoft"和"(TSL)"。
    1、\\(和\\)是对中括号()的匹配。
    2、\\w表示\w是一个元字符,匹配包括下划线的任何单词字符。\\w+表示匹配多个任意单词字符。
相关