peterm の提案を拡張するために、lpeg は、lpegによって提供される追加のパワーと柔軟性を維持しながらre
、同様のインターフェイスを lua の標準ライブラリに公開するモジュールも提供します。string
re
モジュールの構文は lpeg に比べて難解ではないため、最初にモジュールを試してみることをお勧めします。hello world の例と一致する使用例を次に示します。
dump = require 'pl.pretty'.dump
re = require 're'
local subj = "hello, world! padding world1 !hello hello hellonomatch nohello"
pat = re.compile [[
toks <- tok (%W+ tok)*
tok <- {'hello' / 'world'} !%w / %w+
]]
res = { re.match(subj, pat) }
dump(res)
出力は次のとおりです。
{
"hello",
"world",
"hello",
"hello"
}
一致の位置をキャプチャすることに興味がある場合は、位置キャプチャ用に文法を少し変更するだけです。
tok <- {}('hello' / 'world') !%w / %w+