0Pricing
Lua Academy · 课时

使用 string.gmatch 进行分词

使用 string.gmatch 遍历字符串中的所有匹配项。

使用 string.gmatch 进行分词 是 CoddyKit 上的免费 Lua Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Lua Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Lua Academy 课程共包含 4 节课。

什么是 string.gmatch?

string.gmatch(s, pattern) 返回一个迭代器,依次返回字符串 s 中 pattern 的所有匹配结果。

遍历单词

通过匹配连续的非空格字符,将字符串拆分为单词。

local s = "the quick brown fox"
for word in s:gmatch("%S+") do
  print(word)
end

将匹配结果收集到表中

将所有匹配结果收集到表中,以便进一步处理。

local function split(s, pat)
  local parts = {}
  for token in s:gmatch(pat) do
    parts[#parts+1] = token
  end
  return parts
end
local words = split("one two three", "%S+")
print(#words)  -- 3

提取数字

使用 %d+ 模式从字符串中提取所有整数。

local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
  print(tonumber(n))
end

在 gmatch 中使用捕获

当模式包含捕获时,每次迭代都会返回捕获的组,而不是完整匹配结果。

local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
  print(k, "->", v)
end

CSV 分词器

通过捕获逗号之间的所有内容来拆分 CSV 行。

local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
  print(field)
end

解析键值对

将类似 HTTP 标头的字符串解析为由键值对组成的表。

local headers = "Content-Type: text/html; Content-Length: 1234"
local parsed = {}
for k, v in headers:gmatch("([%w%-]+): ([^;]+)") do
  parsed[k] = v:match("^%s*(.-)%s*$")
end

统计模式出现次数

统计某个模式在字符串中出现了多少次。

local function count(s, pat)
  local n = 0
  for _ in s:gmatch(pat) do n = n + 1 end
  return n
end
print(count("banana", "an"))  -- 2

句子分词器

通过匹配直到标点符号为止的内容,将文本拆分为句子。

local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
  print(sent:match("^%s*(.-)%s*$"))
end

循环中的 gmatch 与 string.find

gmatch 是遍历所有匹配结果的推荐方式。在 while 循环中使用 string.find 更加冗长,也更容易出错。

Unicode 注意事项

Lua 模式按字节操作。多字节 UTF-8 字符可能无法被单字符模式正确匹配。要获得完整的 Unicode 支持,请使用 UTF-8 库。

gmatch 问题

for w in s:gmatch("%S+") do 会遍历什么内容?

回顾:string.gmatch

string.gmatch 是 Lua 的标准分词器。可以在简洁的迭代器循环中使用它来拆分字符串、提取所有数字、解析键值对以及统计模式出现次数。

常见问题解答

「使用 string.gmatch 进行分词」课时是免费的吗?

是的 — 「使用 string.gmatch 进行分词」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Lua Academy 课程的其余内容,请升级到 CoddyKit PRO。 Lua Academy 课程共包含 4 节课。

「使用 string.gmatch 进行分词」这节课中我会学到什么?

使用 string.gmatch 遍历字符串中的所有匹配项。 你通过在浏览器中直接运行的动手代码来练习 Lua Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Lua Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Lua Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「使用 string.gmatch 进行分词」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Lua Academy 课中编写并运行代码吗?

能。每节 Lua Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Lua 模式语法
  2. 捕获组和 string.match
  3. 使用 string.gmatch 进行分词
  4. 使用 string.gsub 进行转换
← 返回 Lua Academy