String 如何检查Lua中的字符串中是否找到匹配文本?

String 如何检查Lua中的字符串中是否找到匹配文本?,string,lua,conditional,string-matching,String,Lua,Conditional,String Matching,如果在一个文本字符串中至少找到一次特定的匹配文本,我需要设置一个条件为true,例如: 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.") 如何检查文本是否在字符串中的某个位置找到?有两个选项可用

如果在一个文本字符串中至少找到一次特定的匹配文本,我需要设置一个条件为true,例如:

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.")

如何检查文本是否在字符串中的某个位置找到?

有两个选项可用于查找匹配的文本<代码>字符串。匹配或
字符串。查找

这两种方法都对字符串执行正则表达式搜索以查找匹配项


返回找到的子字符串的
startIndex
endIndex

plain
标志允许忽略模式并将intead解释为文字。它不是将
(tiger)
解释为与
tiger
匹配的正则表达式捕获组,而是在字符串中查找
(tiger)

另一方面,如果您希望正则表达式匹配,但仍然需要文本特殊字符(如
([]+-
等),则可以使用百分比对其进行转义<代码>%(老虎%)

您可能会将其与
string.sub

例子
返回找到的捕获组

例子
或者,使用语法sugar
str:find(“tiger”)
这适用于简单的示例“tiger”,但有许多可能的搜索字符串会被解释为模式而不是文字字符串,从而破坏代码。请考虑更新上面的例子来支持搜索字符串“老虎”(.NashanWebe),你是正确的。因为这似乎是一个广受欢迎的答案,我增加了一个相同的部分。转义模式匹配字符仍然不能处理任意搜索字符串的情况,该字符串是真正任意的(非硬编码),可能包含也可能不包含无法转义的特殊字符。理想情况下,答案应该让读者参考可选的第四个参数,该参数可以禁用模式搜索。e、 g.string.find(myArbitraryString,myArbitrarySearchString,1,true),它适用于运行时可能遇到的myArbitrarySearchString的任何值,包括值“tiger”(.@NathanWiebe
string.find()
有第四个参数
普通
,当设置为true时,第二个参数将被视为普通字符串。而
('aa+bb'):find('a+b')
返回
nil
(不匹配),
('aa+bb'):find('a+b',1,true)
返回
2,4
(找到匹配项)。
string.find(subject string, pattern string, optional start position, optional plain flag)
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(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