lua字符串正则匹配

使用string.gsubstring.gmatch此类接口进行匹配字符串时
示例代码

local str = "#普通文本:<#选中内容#><<#示例文本#>>"    
string.gsub(str, "[^<#|#>]+", function(w)  --分割字符串
		print("all---"..w)
end);

string.gsub(str, "<#.-#>", function(w)     --匹配字符串
		print("gsub---"..string.gsub(w, "[<#|#>]", ""))
end);

for w in string.gmatch(str, "<#.-#>") do   --匹配字符串
	print("gamtch---"..string.gsub(w, "[<#|#>]", ""))
end

输出

all---普通文本:
all---选中内容
all---示例文本
gsub---选中内容
gsub---示例文本
gamtch---选中内容
gamtch---示例文本

特殊字符分割字符串

local strTaskId  = "71,72,"    
if strTaskId~=nil and strTaskId~="" then
	string.gsub(strTaskId, "[^',']+", function(w) 
			print(w)
		end);
end

字符串匹配查找

local strDate = "2019/06/27 19:48:57"
local _, _, y, m, d, _hour, _min, _sec = string.find(strDate, "(%d+)/(%d+)/(%d+)%s*(%d+):(%d+):(%d+)");
 
print(y);
print(m);
print(d);
print(_hour);
print(_min);
print(_sec);
 
--转化为时间戳
local timestamp = os.time({year=y, month = m, day = d, hour = _hour, min = _min, sec = _sec});
print("timestamp = ", timestamp);

千分位分割

function formatnumberthousands(num)
	local function checknumber(value)
		return tonumber(value) or 0
	end
	local formatted = tostring(checknumber(num))
	local k
	while true do
		formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
		if k == 0 then 
			break end
		end
	return formatted
end
字符匹配
.任意字符
%a字母
%c控制字符
%d数字
%l小写字母
%p标点字符
%s空白符
%u大写字母
%w字母和数字
%x十六进制数字
%z代表0的字符
上面字符类的大写形式表示小写所代表的集合的补集例如, '%A’非字母的字符

模式串中的特殊字符

( ) . % + - * ? [ ^ $

%转义
‘%’用作特殊字符的转义字符
‘%.’匹配点;
‘%%’匹配字符 ‘%’。

转义字符 '%'不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。当对一个字符有疑问的时候,为安全起见请使用转义字符转义他。

‘[%w_]’匹配字母数字和下划线
‘[01]’匹配二进制数字
‘[%[%]]’匹配一对方括号
在’[]‘中使用连字符’-’
‘%d’表示 ‘[0-9]’;
‘%x’表示 ‘[0-9a-fA-F]’
‘[0-7]’表示 ‘[01234567]’
在’[]'开始处使用 ‘^’ 表示其补集:
‘[^0-7]’匹配任何不是八进制数字的字符;
‘[^\n]’匹配任何非换行符户的字符。
‘[^%s]’== ‘%S’

模式修饰符

+匹配前一字符1次或多次
*匹配前一字符0次或多次;最长匹配
-匹配前一字符0次或多次;最短匹配
?匹配前一字符0次或1次
^匹配字符串开头
$匹配字符串结尾

关于正则表达式:正则表达式30分钟入门教程
更通俗版本:你是如何学会正则表达式的
关于使用字符串操作接口示例:Lua将屏蔽字替换为’*’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值