se 正则表达式操作
2022-12-22 14:26:23 最后更新
用法:
--===========例子1;所有属性展示
--字符串
local a = "qqqq123456eee"
--正则表达式
local b = "([a-z]+)(\\d+)"
--更多参数
local c = 0
local d = i:se(a, b, c)
syso(d)

--替换成,将替换全部
local e = i:se(d, "sral", "1:$1, 2:$2")
syso(e)
--替换成,只替换第一个
local e = i:se(d, "srft", "1:$1, 2:$2")
syso(e)

--返回是否匹配成功,赋值返回true或 false
.local e = i:se(d, "ms")

--开始匹配 或 匹配下一个,赋值返回true或 false
.local e = i:se(d, "find")

--给定位置序号进行匹配,赋值返回true或 false
.local e = i:se(d, "find", 1)

--获取匹配组的数量,当前为2组:([a-z]+)、(\d+)
.local e = i:se(d, "gl")

--获取第1组匹配到的子字符串在字符串中的开头位置 
.local e = i:se(d, "start", 1)

--获取第1组匹配到的子字符串在字符串中的结尾位置 
.local e = i:se(d, "end", 1)

--获取第1组匹配到的子字符串
.local e = i:se(d, "group", 1)
--获取第2组匹配到的子字符串
.local e = i:se(d, "group", 2)

--===========例子2;获取所有手机号

--字符串
local a = "我的号码 13612345678 , 你的号码 13412345678"
--正则表达式
local b = "[1][3-8]\\d{9}"
--更多参数
local c = 0
local d = i:se(a, b, c)

--开始匹配 或 匹配下一个
local ee = i:se(d, "find")

--循环判断是否匹配成功
while ee do
--因为 [1][3-8]\\d{9} 没有组,所以这里我们输入 0
local e = i:se(d, "group", 0)

--打印出匹配到的子字符串
syso(e)

--开始匹配 或 匹配下一个
ee = i:se(d, "find")
end

--===========例子3;判断是否为手机号

--字符串
local a = "13612345678"
--正则表达式
local b = "^[1][3-8]\\d{9}$"
--更多参数
local c = 0
local d = i:se(a, b, c)

local e = i:se(d, "ms")
if e == true then
syso("手机号格式正确")
else
syso("手机号格式错误")
end

说明:
常用与字符串处理,高效的处理字符串,以及检测字符串类型等。使用此方法,需要对正则表达式有部分知识。