API strfind

Returns a pair of numbers representing the start and end of the first occurrence of the pattern within the string, if it exists.
 startPos, endPos = string.find(string, pattern [, initpos [, plain]])
 startPos, endPos = strfind(string, pattern [, initpos [, plain]])
==Arguments==
:; string: - The string to examine.
:; pattern: - The pattern to search for within string. This pattern is similar to Unix regular expressions, but is not the same -- see Lua Pattern matching for more details.
:; initpos: - Index of the character within string to begin searching. As is usual for Lua string functions, 1 refers to the first character of the string, 2 to the second, etc. -1 refers to the last character of the string, -2 to the second last, etc. If this argument is omitted, it defaults to 1; i.e., the search begins at the beginning of string.
:; plain: - Whether or not to disable regular expression matching. Defaults to false, so regex matching is usually enabled.
==Returns==
:; startPos: - The position of the first character of the first occurrence of the pattern.
:; endPos: - The position of the last character of the first occurrence of the pattern.
==Example==
Find the first occurrence of the pattern in the string passed. If an instance of the pattern is found a pair of values representing the start and end of the string is returned. If the pattern cannot be found nil is returned.
 > = string.find("Hello Lua user", "Lua")
 7 9
 > = string.find("Hello Lua user", "banana")
 nil
We can optionally specify where to start the search with a third argument. The argument may also be negative which means we count back from the end of the string and start the search.
 > = string.find("Hello Lua user", "Lua", 1) -- start at first character
 7 9
 > = string.find("Hello Lua user", "Lua", 8) -- "Lua" not found again after character 8
 nil
 > = string.find("Hello Lua user", "e", -5) -- first "e" 5 characters from the end
 13 13
The pattern argument can be a regular expression which allows more complex searches. See the Patterns Tutorial on Lua-Users.org and Pattern matching for more information. We can turn off the regular expression feature by using the optional fourth argument plain. plain takes a boolean value and must be preceded by init. E.g.,
 > = string.find("Hello Lua user", "%su") -- find a space character followed by "u"
 10 11
 > = string.find("Hello Lua user", "%su", 1, true) -- turn on plain searches, now not found
 nil
Sometimes it's more appropriate to use string.find, rather than string.gmatch, eg:
 local msg = "Phase2:- There isn't any need for iterating over this mini-string.";
 local startPos, endPos, firstWord, restOfString = string.find( msg, "(%w+)[%s%p]*(.*)");
Result:
 startPos = 1
 endPos = 66
 firstWord = "Phase2"
 restOfString = "There isn't any need for iterating over this mini-string."