常用函数
string.find(s, pattern[, init[, plain]])
- 参数:- s: 将要匹配字符串
- pattern: 匹配字符
- init: 可选参数, 从那个引索开始匹配,默认从头(引索为 1)开始匹配
- plain: 可选参数, 为 true 时,普通字符串匹配,默认正则匹配
 
- 返回: 匹配成功的开始,结束引索
|  |  | 
string.match(s, pattern[, init])
- 参数:- s: 将要匹配字符串
- pattern: 匹配字符
- init: 可选参数, 从那个引索开始匹配,默认从头(引索为 1)开始匹配
 
- 返回: 匹配失败,返回 nil, 当 pattern 没有分组,返回第一个匹配的子串,返回第一个匹配到子串的分组,多个分组就返回多个。可选参数 init 表示匹配字符串的起始索引,缺省为 1,可以为负索引。
|  |  | 
string.gmatch(s, pattern)
- 参数:- s: 将要匹配字符串
- pattern: 匹配字符
 
- 返回: 返回一个迭代器。每当迭代器调用时,返回下一个匹配到的子串,如果 pattern 中有分组,返回的是子串对应的分组。gmatch 也可以用 find 和循环来实现。
|  |  | 
string.gsuib(s, pattern, repl[, n])
- 参数:- s: 将要匹配字符串
- pattern: 匹配字符
- repl: 将匹配到的 pattern 替换为 repl, repl 可以是一个函数,或一个 string
- n: 替换次数,默认全部替换
 
- 返回替换后的字符串
|  |  | 
lua 常用正则表达式表
| 元字符 | 描述 | 表达式 | 完整匹配字符串 | 
|---|---|---|---|
| 字符 | |||
| 普通字符串匹配 | 除去%.[]^$*+-?的字符 | kana | kana | 
| . | 匹配任意字符 | k.a | kva | 
| % | 转义字符 | %% | % | 
| […] | 字符集合 | [a%]a | aa | 
| [..-..] | - 表示 ascii 码前后所有字符 | [a-z]a | na | 
| [^…] | ^ 不在集合中的字符 | [^az] | c | 
| 重复 | |||
| * | 前一个字符的 0 次或多次 | a* | aaaa | 
| + | 前一个字符的 1 次或 1 次以上 | [a-z]+ | axc | 
| ? | 字符出现 0 次或 1 次 | [a-z]?1 | a1 | 
| 预订字符集 | |||
| %s | 空白字符[\r\n\t\v\f] | an[%s]?9 | an 9 | 
| %p | 标点符号 | an[%p]?9 | an.9 | 
| %c | 控制字符 | ||
| %w | 类似[a-zA-Z0-9] | %w+ | a1Z | 
| %a | 字母[a-zA-Z] | %a+ | aZ | 
| %l | 小写字符[a-z] | %l+ | ac | 
| %u | 大写字符[A-Z] | %u+ | ACB | 
| %d | 数字[0-9] | %d+ | 123 | 
| %x | 16 进制数字[0-9a-fA-F] | %x+ | fe12 | 
| %z | ascii 码为 0 的字符 | ||
| 分组 | |||
| (…) | 分组 | a(cd) | ad | 
| 边界匹配 | |||
| ^ | 字符串开头 | ||
| $ | 字符串结尾 | ||
| %b | 平衡匹配(匹配 xy 对) | %b() | (3+4(x*2)) |