トークン化のための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))
endgmatchでキャプチャを使う
パターンにキャプチャがある場合、各反復処理では一致全体ではなく、キャプチャしたグループが返されます。
local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
print(k, "->", v)
endCSVトークナイザー
カンマの間にあるすべての文字列をキャプチャして、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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Luaパターン構文
- キャプチャとstring.match
- トークン化のためのstring.gmatch
- 変換のためのstring.gsub