1

("bar"):find("(foo)?bar")返してはいけません1, 3か?

print(("bar"):find("(foo)*bar"))どちらも機能しprint(("bar"):find("(foo)-bar"))ません。

4

2 に答える 2

5

これは、Lua のパターンの括弧が (非常に残念なことに) グループ化構造として機能せず、キャプチャ グループの区切り記号としてのみ機能するためです。patternを書くと、Luaはそれを(foo)?bar「マッチ、、、、、、、グループでキャプチャ」と解釈します。ここにデモへのリンクがあります。残念ながら、あなたが望んでいた動作に最も近いのはであり、これはもちろん と にも一致し、他の間違ったキャプチャもあります。foo?barfoof?o?o?barfbaroobar

このコード

print(("bar"):find("f?o?o?bar"))

1 3 を返します

于 2013-01-20T13:22:15.017 に答える
0

"(foo)bar"stringまたは"(foobar"from stringを検索している"bar"場合、疑問符?は最後の文字のみを指します。

単語全体を指すようにしたい場合は、[]代わりに次を使用します。("bar"):find("[foo]?bar")

于 2013-01-20T13:08:49.930 に答える