0Pricing
Lua Academy · レッスン

トークン化のためのstring.gmatch

string.gmatchで文字列内のすべてのマッチを反復処理します。

「トークン化のためのstring.gmatch」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応の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文字は、1文字に一致するパターンでは正しく一致しない場合があります。Unicodeを完全にサポートするには、UTF-8ライブラリを使用してください。

gmatchの問題

for w in s:gmatch("%S+") do は何を反復処理しますか。

まとめ:string.gmatch

string.gmatch は、Lua標準のトークナイザーです。文字列の分割、数値の抽出、キーと値のペアの解析、パターンの出現回数のカウントを、分かりやすいイテレータループで実行できます。

よくある質問

「トークン化のためのstring.gmatch」レッスンは無料ですか?

はい。「トークン化のためのstring.gmatch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Lua Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Lua Academyコースには全4レッスンが含まれています。

「トークン化のためのstring.gmatch」で何を学びますか?

string.gmatchで文字列内のすべてのマッチを反復処理します。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応の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に戻る