Search code examples
stringluaconditional-statementsstring-matching

How to check if matching text is found in a string in Lua?


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?


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