zm.RegExMatchEx 正则子匹配

文章目录
  1. 1. 功能
  2. 2. 语法
  3. 3. 参数
  4. 4. 返回值
  5. 5. 示例
  6. 6. 备注

功能

捕获子匹配结果,并保存到二维数组中。

语法

结果 = zm.RegExMatchEx(源字符串, 正则表达式[, 返回表])

参数

参数 数据类型 解释
源字符串 字符串 待匹配查找的字符串内容
正则表达式 字符串 匹配模式,必须含有子匹配,与Javascript或Perl等正则不同,详见Lua匹配模式
返回表 可选参数, 只能填写数据类型为数组的变量, 匹配失败返回最大下标为-1的数组

返回值

字符串数组 ,返回捕获的子匹配结果保存到二维数组中,失败返回null

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次

Dim ret()
Dim s = "紫猫老师QQ:345911220, Email:[email protected]"
Dim data = zm.RegExMatchEx(s, "QQ:(%d+).-Email:(%w-@%w-%.%w+)", ret)
If data then
For Each v in data
TracePrint "返回本轮匹配结果:"
For Each vv in v
TracePrint vv
Next
Next

//若填写了返回表参数, 则可以取出结果
For Each v in ret
TracePrint "返回本轮表的结果:"
For Each vv in v
TracePrint vv
Next
Next
Else
TracePrint "未捕获到数据"
End If

备注

从1.1750起, 失败返回值由长度-1的数组改为null

  • V1.1738: 加入命令
  • V1.1739: 修复.*出现死循环的BUG
  • V1.1745: 修复无法获取多个匹配结果的问题
  • V1.1750: 失败返回null, 加入返回参数
  • V3.1929: 修复正则匹配部分规则失效问题