How to check if matching text is found in a string in Lua?
conditional-statements, lua, string, string-matching
Solution
There are 2 options to find matching text; `string.match` or `string.find`.
Both of these perform a Lua patten search on the string to find matches.
`string.find()`
string.find(subject string, pattern string, optional start position, optional plain flag)
Returns the `startIndex` & `endIndex` of the substring found.
The `plain` flag allows for the pattern to be ignored and intead be interpreted as a literal. Rather than `(tiger)` being interpreted as a pattern capture group matching for `tiger`, it instead looks for `(tiger)` within a string.
Going the other way, if you want to pattern match but still want literal special characters (such as `.()[]+-` etc.), you can escape them with a percentage; `%(tiger%)`.
You will likely use this in combination with `string.sub`
Example
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)
Returns the capture groups found.
Example
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
Problem
I need to make a conditional that is true if a particular matching text is found at least once in a string of text, e.g.: ``` 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.") ``` How can I check if the text is found somewhere in the string?