lua字符串正则匹配
使用string.gsub、string.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~="" thenstring.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 0endlocal formatted = tostring(checknumber(num))local kwhile true doformatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')if k == 0 then break endendreturn 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将屏蔽字替换为’*’
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
