Menu
Coddy logo textTech

文字列パターンの基礎

CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 36/54。

前のレッスンで string.gsub() を使用したときは、スペースや特定の単語などの正確なテキストを検索しました。しかし、正確な文字がわからなくても「任意の数字」や「任意の文字」を探したい場合はどうすればよいでしょうか?そこで登場するのが文字列パターンです。

Luaにおける文字列パターンは、探しているテキストそのものではなく、どのような種類のテキストを探しているかを記述する方法です。これらは正規表現よりも単純ですが、ほとんどのテキスト処理タスクには十分なほど強力です。

Luaは、文字のカテゴリに一致する文字クラスと呼ばれる特殊なコードを提供しています。以下は、最も一般的なものです:

%d  -- 任意の数字 (0-9) に一致します
%a  -- 任意の文字 (a-z, A-Z) に一致します
%s  -- 任意の空白文字 (スペース、タブ、改行) に一致します
%w  -- 任意の英数字 (文字と数字) に一致します
%p  -- 任意の句読点文字に一致します

これらのパターンを string.find() と共に使用して、文字列内の最初の数字を見つける方法は次のとおりです:

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- 出力: 6

これらのクラスの大文字バージョンを使用して、逆の条件に一致させることもできます。例えば、%D は数字でない任意の文字に一致し、%A は文字でない任意の文字に一致します。

challenge icon

チャレンジ

簡単

textを受け取り、そのテキストに少なくとも1つの数字が含まれているかどうかを返す関数containsDigitを作成してください。

string.find()%d文字クラスと共に使用して、文字列内に数字が存在するかどうかを確認してください。

引数:

  • text (string): 数字が含まれているか確認するテキスト

戻り値: テキストに少なくとも1つの数字が含まれている場合はtrue、そうでない場合はfalse (boolean)

チートシート

Luaの文字列パターンは、探しているテキストそのものではなく、どのような種類のテキストを探しているかを記述します。

Luaは、文字のカテゴリに一致する文字クラスと呼ばれる特別なコードを提供しています:

%d  -- 任意の数字 (0-9) に一致
%a  -- 任意の文字 (a-z, A-Z) に一致
%s  -- 任意の空白文字 (スペース、タブ、改行) に一致
%w  -- 任意の英数字 (文字と数字) に一致
%p  -- 任意の句読点文字に一致

大文字バージョンを使用すると、その反対に一致させることができます。例えば、%D は数字でない任意の文字に一致し、%A は文字でない任意の文字に一致します。

string.find() で文字クラスを使用する:

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- 出力: 6

自分で試してみよう

function containsDigit(text)
    -- ここにコードを記述してください
end
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン