Difference between revisions of "String.gmatch"
From GiderosMobile
m (→Description: fixed some html tags) |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
+ | '''Available since:''' Gideros 2011.6<br/> | ||
+ | '''Class:''' [[string]]<br/> | ||
− | + | === Description === | |
− | + | Returns an iterator function that, each time it is called, returns the next captures from pattern ''pat'' over string ''s''. If pattern specifies no captures, then the whole match is produced in each call. | |
− | ''' | + | <syntaxhighlight lang="lua"> |
− | < | + | (function) = string.gmatch(s,pat) |
− | + | </syntaxhighlight> | |
− | |||
− | < | ||
− | + | '''note: the ''gfind'' method was deprecated in Lua 5.1, and in Lua 5.2, it was replaced by ''gmatch''''' | |
− | |||
− | |||
− | |||
− | < | + | === Parameters === |
− | + | '''s''': (string) string where to look for patterns<br/> | |
− | </ | + | '''pat''': (string) pattern to look for<br/> |
− | + | === Return values === | |
− | + | '''Returns''' (function) iterator function<br/> | |
− | |||
− | |||
− | |||
− | </ | ||
− | + | === Examples === | |
− | will iterate over all the words from string s, printing one per line | + | '''The following loop will iterate over all the words from string s, printing one per line''' |
− | </ | + | <syntaxhighlight lang="lua"> |
+ | s = "hello world from Lua" | ||
+ | for w in string.gmatch(s, "%a+") do | ||
+ | print(w) | ||
+ | end | ||
+ | -- if you want to print each letter individually rather than sequences just remove the '+' sign | ||
+ | </syntaxhighlight> | ||
− | < | + | '''The next example collects all pairs key=value from the given string into a table''' |
− | + | <syntaxhighlight lang="lua"> | |
− | + | t = {} | |
− | + | s = "from=world, to=Lua" | |
− | + | for k, v in string.gmatch(s, "(%w+)=(%w+)") do | |
− | + | t[k] = v | |
− | </ | + | end |
− | + | </syntaxhighlight> | |
− | |||
For this function, a '^' at the start of a pattern does not work as an anchor, as this would prevent the iteration. | For this function, a '^' at the start of a pattern does not work as an anchor, as this would prevent the iteration. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | {{String}} | |
− | |||
− | |||
− |
Latest revision as of 02:45, 17 November 2023
Available since: Gideros 2011.6
Class: string
Description
Returns an iterator function that, each time it is called, returns the next captures from pattern pat over string s. If pattern specifies no captures, then the whole match is produced in each call.
(function) = string.gmatch(s,pat)
note: the gfind method was deprecated in Lua 5.1, and in Lua 5.2, it was replaced by gmatch
Parameters
s: (string) string where to look for patterns
pat: (string) pattern to look for
Return values
Returns (function) iterator function
Examples
The following loop will iterate over all the words from string s, printing one per line
s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
print(w)
end
-- if you want to print each letter individually rather than sequences just remove the '+' sign
The next example collects all pairs key=value from the given string into a table
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
t[k] = v
end
For this function, a '^' at the start of a pattern does not work as an anchor, as this would prevent the iteration.