Lua 模式语法
学习 Lua 模式中的字符类 %d、%a、%s、锚点和量词。
Lua 模式语法 是 CoddyKit 上的免费 Lua Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Lua Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Lua Academy 课程共包含 4 节课。
Lua 模式与正则表达式
Lua 使用自己的模式语言,而不是完整的 POSIX 正则表达式。它更简单、速度更快,但不支持交替(|)和前瞻。
字符类
%d 表示数字,%a 表示字母,%l 表示小写字母,%u 表示大写字母,%s 表示空白字符,%p 表示标点符号,%w 表示字母或数字。大写形式表示否定:%D = 非数字。
量词
* 零次或多次(贪婪匹配),+ 一次或多次,? 零次或一次,- 零次或多次(惰性匹配/最短匹配)。
local s = "hello world"
print(s:match("%a+")) -- hello (first word)
print(s:match(".-o")) -- hell (lazy stops early)锚点
^ 锚定字符串开头,$ 锚定字符串结尾。
print(("hello"):match("^h")) -- h
print(("hello"):match("o$")) -- o
print(("hello"):match("^world")) -- nil使用 [] 定义字符集
自定义字符类:[aeiou] 匹配任意元音字母,[^aeiou] 匹配任意非元音字母,[a-z] 匹配小写字母。
local s = "Hello World 123"
print(s:match("[A-Z]")) -- H
print(s:match("[0-9]+")) -- 123转义特殊字符
特殊字符 ( ) . % + - * ? [ ^ $ 必须使用 % 进行转义。
local s = "price: 3.14"
print(s:match("%d+%.%d+")) -- 3.14 (. escaped to match literal dot)点号通配符
. 匹配任意单个字符。与量词结合使用时,.- 表示惰性全匹配。
print(("abc123"):match("(.-)%d")) -- abc (lazy, stops at first digit)前沿模式 %f
%f[set] 匹配一个空位置,该位置位于不在 set 中的字符与位于 set 中的字符之间,适合用于匹配单词边界。
local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
print(w) -- hello, world, foo
endstring.find 与 string.match
string.find 返回起始和结束索引(以及捕获内容)。string.match 直接返回匹配到的文本(或捕获内容)。
local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j) -- 7 16
print(s:match("(%d+)-(%d+)-(%d+)")) -- 2025 01 15平衡匹配 %b
%bxy 匹配由字符 x 和 y 构成的平衡字符对。例如,%b() 匹配平衡的括号,包括嵌套括号。
local s = "func(a, (b+c), d)"
print(s:match("%b()")) -- (a, (b+c), d)模式的限制
Lua 模式不支持:交替匹配(a|b)、反向引用、前瞻/后瞻或命名组。对于这些需求,请使用 LPEG 或外部正则表达式库。
模式语法问题
哪个模式可以匹配一个或多个数字?
回顾:Lua 模式语法
Lua 模式使用 %d %a %s 字符类、* + ? - 量词、^ $ 锚点、[] 字符集,以及用于平衡匹配的 %b。它们效率较高,但不支持正则表达式的交替匹配。
常见问题解答
「Lua 模式语法」课时是免费的吗?
是的 — 「Lua 模式语法」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Lua Academy 课程的其余内容,请升级到 CoddyKit PRO。 Lua Academy 课程共包含 4 节课。
「Lua 模式语法」这节课中我会学到什么?
学习 Lua 模式中的字符类 %d、%a、%s、锚点和量词。 你通过在浏览器中直接运行的动手代码来练习 Lua Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Lua Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Lua Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「Lua 模式语法」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Lua Academy 课中编写并运行代码吗?
能。每节 Lua Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。