下面是彗星正则表达式模块源码。
.版本 2
.程序集 彗星正则表达式类, , 公开
.程序集变量 RegExp, 对象
.程序集变量 MatchCollection, 对象
.程序集变量 Match_Count, 整数型
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
RegExp.清除 ()
MatchCollection.清除 ()
.子程序 创建, 逻辑型, 公开, 根据指定的正则表达式文本创建一个正则表达式对象。本对象中的原有内容将被释放
.参数 正则表达式文本, 文本型, , 比如“易语言4\.0(模块|支持库)?”
.参数 忽略大小写, 逻辑型, 可空, 可以被省略。默认值为真。本参数指定这个正则表达式在创建成功后进行匹配、搜索、替换时,是否区分大小写。
.参数 匹配多行, 逻辑型, 可空, 可以被省略。默认值为真。如果本成员值为真,字符“^”不仅匹配目标文本的开头,而且匹配目标文本中换行符(字符(10),字符(13)或 #换行符)的后面;字符“$”不仅匹配目标文本的结尾,而且匹配目标文本中换行符的前面。否则字符“^”仅仅匹配目标文本的开头,“$”也仅仅匹配目标文本的结尾。
.参数 全局匹配, 逻辑型, 可空
MatchCollection.清除 ()
RegExp.清除 ()
RegExp.创建 (“VBScript.RegExp”, )
.如果真 (RegExp.是否为空 ())
输出调试文本 (“对象创建失败:VBScript.RegExp”, “如果是在多线程里使用请先执行’初始化COM库’”)
返回 (假)
.如果真结束
.如果真 (是否为空 (忽略大小写))
忽略大小写 = 真
.如果真结束
.如果真 (是否为空 (匹配多行))
匹配多行 = 真
.如果真结束
.如果真 (是否为空 (全局匹配))
全局匹配 = 真
.如果真结束
Match_Count = 0
RegExp.写属性 (“IgnoreCase”, 忽略大小写)
RegExp.写属性 (“Multiline”, 匹配多行)
RegExp.写属性 (“Global”, 全局匹配)
RegExp.写属性 (“Pattern”, 正则表达式文本)
返回 (真)
.子程序 取文本, 文本型, 公开, 返回以文本形式表示的正则表达式。如果该对象尚未创建,则返回空文本。本命令为高级对象成员命令。
.如果真 (RegExp.是否为空 ())
返回 (“”)
.如果真结束
返回 (RegExp.读文本属性 (“Pattern”, ))
.子程序 替换, 文本型, 公开, 替换在正则表达式查找中找到的文本。
.参数 欲被替换的文本, 文本型, , 将要进行文本替换的字符串
.参数 用作替换的文本, 文本型, 可空, 用作替换的文本
返回 (RegExp.文本方法 (“Replace”, 欲被替换的文本, 用作替换的文本))
.子程序 搜索全部, 整数型, 公开, 使用指定的正则表达式搜索指定文本中与该表达式匹配的所有子文本。返回匹配结果数量
.参数 欲被搜索的文本, 文本型
MatchCollection = RegExp.对象型方法 (“Execute”, 欲被搜索的文本)
Match_Count = MatchCollection.读数值属性 (“Count”, )
返回 (Match_Count)
.子程序 取匹配数量, 整数型, 公开
返回 (Match_Count)
.子程序 取匹配文本, 文本型, 公开
.参数 匹配索引, 整数型, , 第几个匹配文本,索引值从1开始
.局部变量 Match, 对象
.局部变量 Value, 文本型
Match = MatchCollection.读对象型属性 (“Item”, 匹配索引 - 1)
Value = Match.读文本属性 (“Value”, )
返回 (Value)
.子程序 取子匹配文本, 文本型, 公开
.参数 匹配索引, 整数型, , 第几个匹配文本,索引值从1开始
.参数 子表达式索引, 整数型, , 欲取其值的子表达式。该参数对应与正则表达式中的一个子表达式(以圆括号标记)。索引从1开始。
.局部变量 Match, 对象
.局部变量 SubMatches, 对象
.局部变量 Ret, 变体型
Match = MatchCollection.读对象型属性 (“Item”, 匹配索引 - 1)
SubMatches = Match.读对象型属性 (“SubMatches”, )
Ret = SubMatches.读属性 (“Item”, 子表达式索引 - 1)
返回 (Ret.取文本 ())
.子程序 取子表达式个数, 整数型, 公开
.局部变量 Match, 对象
.局部变量 SubMatches, 对象
.局部变量 Ret, 整数型
.如果真 (Match_Count = 0)
返回 (0)
.如果真结束
Match = MatchCollection.读对象型属性 (“Item”, 0)
SubMatches = Match.读对象型属性 (“SubMatches”, )
Ret = SubMatches.读数值属性 (“Count”, )
返回 (Ret)
.版本 2
.DLL命令 CoInitialize, 整数型, “ole32.dll”
.参数 pvReserved, 整数型
.DLL命令 CoUninitialize, , “ole32.dll”
.版本 2
.子程序 初始化COM库, 整数型, 公开, 在多线程的程序里创建COM对象前先初始化,一个线程只能调用一次
返回 (CoInitialize (0))
.子程序 取消COM库初始化, , 公开, 取消COM库的初始化
CoUninitialize ()