0Pricing
Lua Academy · レッスン

Luaパターン構文

Luaパターンにおける文字クラス%d、%a、%s、アンカー、量指定子を学びます。

「Luaパターン構文」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLua Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Lua Academyコースには全4レッスンが含まれています。

Lua パターンと正規表現の比較

Lua は完全な POSIX 正規表現ではなく、独自のパターン言語を使用します。より単純で高速ですが、選択(|)や先読みには対応していません。

文字クラス

%d は数字、%a は英字、%l は小文字、%u は大文字、%s は空白文字、%p は句読点、%w は英数字を表します。大文字にすると否定になり、%D は数字以外を表します。

量指定子

* 0回以上(貪欲)、+ 1回以上、? 0回または1回、- 0回以上(遅延/最短一致)を表します。

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)

.ワイルドカード

. は任意の1文字に一致します。量指定子と組み合わせると、.- は遅延方式で任意の文字列に一致します。

print(("abc123"):match("(.-)%d"))  -- abc (lazy, stops at first digit)

フロンティアパターン %f

%f[set] は、set に含まれない文字と含まれる文字の間にある空の位置に一致します。単語の境界を判定する場合などに便利です。

local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
  print(w)  -- hello, world, foo
end

string.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または外部の正規表現ライブラリを使用してください。

パターン構文の問題

1個以上の数字に一致するパターンはどれですか。

まとめ:Luaパターン構文

Luaパターンでは、%d %a %s の文字クラス、* + ? - の量指定子、^ $ のアンカー、[] の集合、対応する文字列への一致に使う %b を使用します。効率的ですが、正規表現の選択は利用できません。

よくある質問

「Luaパターン構文」レッスンは無料ですか?

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

「Luaパターン構文」で何を学びますか?

Luaパターンにおける文字クラス%d、%a、%s、アンカー、量指定子を学びます。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Lua Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLua Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Luaパターン構文」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLua Academyレッスンでコードを書いて実行できますか?

はい。すべてのLua Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Luaパターン構文
  2. キャプチャとstring.match
  3. トークン化のためのstring.gmatch
  4. 変換のためのstring.gsub
← Lua Academyに戻る