Menu
CoddyTech

string.match()

本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 38 课,共 54 课。

string.find() 会告诉你模式在字符串中的位置,但有时你需要提取实际匹配的文本。这时就可以用 string.match(),结合捕获功能后,它会更加强大。

捕获组可以标记你想要提取的模式中的特定部分。你可以用括号 () 将模式的一部分括起来,从而创建一个捕获组。当 string.match() 找到匹配项时,它会返回捕获的文本,而不只是位置。

下面是一个从字符串中提取数字的简单示例:

local text = "Player score: 100"
local number = string.match(text, "%d+")
print(number)  -- 输出:100

模式 %d+ 表示“一个或多个数字”。+ 是一个修饰符,用于匹配前面字符类中的一个或多个字符,从而让你捕获多位数。

你可以使用捕获组从更复杂的模式中提取特定部分:

local message = "User: Alice sent a message"
local username = string.match(message, "User: (%a+)")
print(username)  -- 输出:Alice

这里,%a+ 两边的括号告诉 Lua 捕获紧跟在 "User: " 后面的字母序列。模式的其余部分用于找到正确的位置,但只会返回捕获的部分。

如果你的模式包含多个捕获组,string.match() 会将它们作为单独的值全部返回,你可以一次性将它们赋给多个变量。

challenge icon

挑战

简单

编写一个函数 extractPrice,接收 text,并返回字符串中找到的价格值。

使用带捕获模式的 string.match(),提取美元符号后面的数字价格。该模式应使用 %d+ 捕获一个或多个数字。

参数:

  • text(字符串):包含格式为 "Price: $XX" 的价格的字符串

返回值:字符串形式的数字价格(字符串)

亲手试试

function extractPrice(text)
    -- 在这里编写代码
end
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Lua 在线编译器