2013-03-07 11 views
7

私はちょうどluaを初めて知りました...そして、私は何か基本的なものが欠けている場合は謝罪します。
私は文字列内の特定の値を見つけることができるかどうかを調べるために簡単なテストを行っています。ここでこのテストケースではなぜlua string.findがtrueを返しますか?

コードです:

print(string.find('[email protected]','.')) 

の代わりに失敗し、私が期待していたものですが、私は戻って取得しています:

mymachinename:/usr/share/std/test# lua test.lua 
1  1 

あなたは私が間違っているつもりだところを教えてもらえますか?おかげさまで

+1

重複? http://stackoverflow.com/questions/15258313/finding-with-string-find –

答えて

6

これは、findメソッドがパターン. represents any characterを検索するためです。

あなたは文字を使用することができ、問題を回避するために設定します。ここでは

print(string.find('[email protected]','[.]')) 

link to a small demoです。

+2

正規表現でバックスラッシュを使用するのと同様に、エスケープ文字として '%'を使う方が簡単です: 'print(string.find( ' fd @ testca '、'%。 ')) ' –

+0

@KeithThompsonそれは知ってうれしいです、ありがとう!私は唯一のLuaのカジュアルなユーザーなので、私の知識は細部に限られています。 – dasblinkenlight

+0

@KeithThompson私は個人的にそれが味の問題だと思います。括弧のようなシンボルをエスケープする場合、 '%('と '%)'よりもはるかに読みやすくなっています。特に、実際のグループ化のカッコで挟まれている場合は、 '[] 'と' []文字クラスを使用して単一の文字をエスケープすると、より長いパターンで簡単に認識できる素敵な小さな四角形が作成されます。また、文字の「中心」( '%('実際の情報は中央 –

3

ルアはパターン(here)を使用して検索します。オプションの第4パラメータでパターンをオフにすることができます。

print(string.find('[email protected]','.', 1, true)) 

オプションの第3パラメータ(1)が開始位置です。

+0

いいえ、Luaは正規表現を使用せず、* patterns *、[ここで説明する](http:// www。 –

+0

@KeithThompson:申し訳ありませんが、私はlua-users wikiから言い換えました: "オプションの第4引数 'を使用して正規表現機能を無効にする'にもかかわらず、第4の真偽値パラメータはプレーンテキスト検索を可能にします。 – Corey

+0

私はwiki(およびあなたの答え)を修正しました。 –

関連する問題