Difference between revisions of "String.gmatch"

From GiderosMobile
m
 
(2 intermediate revisions by one other user not shown)
Line 5: Line 5:
 
=== Description ===
 
=== 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.
 
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.
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
(function) = string.gmatch(s,pat)
 
(function) = string.gmatch(s,pat)
</source>
+
</syntaxhighlight>
 +
 
 +
'''note: the ''gfind'' method was deprecated in Lua 5.1, and in Lua 5.2, it was replaced by ''gmatch'''''
  
 
=== Parameters ===
 
=== Parameters ===
Line 18: Line 20:
 
=== Examples ===
 
=== Examples ===
 
'''The following loop 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'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
s = "hello world from Lua"
 
s = "hello world from Lua"
 
for w in string.gmatch(s, "%a+") do
 
for w in string.gmatch(s, "%a+") do
Line 24: Line 26:
 
end
 
end
 
-- if you want to print each letter individually rather than sequences just remove the '+' sign
 
-- if you want to print each letter individually rather than sequences just remove the '+' sign
</source>
+
</syntaxhighlight>
  
 
'''The next example collects all pairs key=value from the given string into a table'''
 
'''The next example collects all pairs key=value from the given string into a table'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
t = {}
 
t = {}
 
s = "from=world, to=Lua"
 
s = "from=world, to=Lua"
Line 33: Line 35:
 
   t[k] = v
 
   t[k] = v
 
end
 
end
</source>
+
</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}}
 
{{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.