1. ホーム
  2. string

[解決済み] Luaで文字列の中にマッチするテキストがあるかどうかを確認するには?

2022-03-07 19:58:04

質問

ある文字列の中に、特定のマッチングテキストが一度でも見つかった場合に真となるような条件を作りたい。

str = "This is some text containing the word tiger."
if string.match(str, "tiger") then
    print ("The word tiger was found.")
else
    print ("The word tiger was not found.")

文字列のどこかにテキストがあるかどうかを確認するにはどうすればよいですか?

どのように解決するのですか?

一致するテキストを探すには、2つの方法があります。 string.match または string.find .

どちらも文字列を正規表現で検索し、一致するものを探します。


string.find()

string.find(subject string, pattern string, optional start position, optional plain flag)

を返します。 startIndex &です。 endIndex の部分文字列が見つかりました。

は、その plain フラグを使用すると、パターンを無視してリテラルとして解釈することができます。むしろ (tiger) の正規表現キャプチャグループマッチングとして解釈されます。 tiger を探すのではなく (tiger) を文字列の中に入れる。

逆に、正規表現でマッチングさせたいが、リテラルな特殊文字(例えば .()[]+- など)は、パーセントでエスケープすることができます。 %(tiger%) .

と組み合わせて使用することが多いでしょう。 string.sub

使用例

str = "This is some text containing the word tiger."
if string.find(str, "tiger") then
  print ("The word tiger was found.")
else
  print ("The word tiger was not found.")
end


string.match()

string.match(s, pattern, optional index)

見つかったキャプチャグループを返します。

使用例

str = "This is some text containing the word tiger."
if string.match(str, "tiger") then
  print ("The word tiger was found.")
else
  print ("The word tiger was not found.")
end