getGroup: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
m (Added version.)
No edit summary
Line 16: Line 16:
<source lang="mtmacro" line>
<source lang="mtmacro" line>
[h: id = strfind("this is a test", "(\\S+)\\s(\\S+)\\s*")]
[h: id = strfind("this is a test", "(\\S+)\\s(\\S+)\\s*")]
match 1, group 0 = [getGroup(id, 1, 0)]<br>
match 1, group 1 = [getGroup(id, 1, 1)]<br>
match 1, group 1 = [getGroup(id, 1, 1)]<br>
match 1, group 2 = [getGroup(id, 1, 2)]<br>
match 1, group 2 = [getGroup(id, 1, 2)]<br>
match 2, group 0 = [getGroup(id, 2, 0)]<br>
match 2, group 1 = [getGroup(id, 2, 1)]<br>
match 2, group 1 = [getGroup(id, 2, 1)]<br>
match 2, group 2 = [getGroup(id, 2, 2)]<br>
match 2, group 2 = [getGroup(id, 2, 2)]<br>
Line 23: Line 25:
Returns
Returns
<pre>
<pre>
match 1, group 0 = this is
match 1, group 1 = this  
match 1, group 1 = this  
match 1, group 2 = is  
match 1, group 2 = is  
match 2, group 0 = a test
match 2, group 1 = a  
match 2, group 1 = a  
match 2, group 2 = test  
match 2, group 2 = test  
</pre>
</pre>
So how does it work:
First off, normaly you only need one \ in a regex statement, but because MT uses regex itself you need to double escape it, so \\.
S = 'everything that is NOT a whitespace'
s = 'whitespace
+ = 'one or more'
* = '0 or more
So \\S means grab the first none-whitespace you encounter,
\\S+ means grap the first none-whitespace you encounter AND ALL characters after that until you encounter a whitespace
So the regex statement looks for (word)(whitespace)(word)(0 or more whitespace). This will deliver 2 matches:
"this is" and "a test". The first match is match 1, the second match 2.
Within one match there are 1 or more groups:
The first group '0' returns the ENTIRE match.
The second group returns the first partial match that is withing (). So group 1 will return the first (\\S) part and group 2 will return the second (\\S) of the regex statement. These are respectively (for the first match): "this" and "is"
}}
}}
[[Category:String Function]]
[[Category:String Function]]

Revision as of 07:04, 28 September 2012

getGroup() Function

Introduced in version 1.3b48
Returns the specified capture group for the specified match that was found using strfind()

Usage

getGroup(id, match, group)

Where

  • id is the id returned by strfind()
  • match is the number of the match found by strfind()
  • group is the number of the capture group found by strfind()

Example

[h: id = strfind("this is a test", "(\\S+)\\s(\\S+)\\s*")]
match 1, group 0 = [getGroup(id, 1, 0)]<br>
match 1, group 1 = [getGroup(id, 1, 1)]<br>
match 1, group 2 = [getGroup(id, 1, 2)]<br>
match 2, group 0 = [getGroup(id, 2, 0)]<br>
match 2, group 1 = [getGroup(id, 2, 1)]<br>
match 2, group 2 = [getGroup(id, 2, 2)]<br>

Returns

match 1, group 0 = this is
match 1, group 1 = this 
match 1, group 2 = is 
match 2, group 0 = a test
match 2, group 1 = a 
match 2, group 2 = test 

So how does it work: First off, normaly you only need one \ in a regex statement, but because MT uses regex itself you need to double escape it, so \\. S = 'everything that is NOT a whitespace' s = 'whitespace + = 'one or more'

  • = '0 or more

So \\S means grab the first none-whitespace you encounter, \\S+ means grap the first none-whitespace you encounter AND ALL characters after that until you encounter a whitespace So the regex statement looks for (word)(whitespace)(word)(0 or more whitespace). This will deliver 2 matches: "this is" and "a test". The first match is match 1, the second match 2. Within one match there are 1 or more groups: The first group '0' returns the ENTIRE match.

The second group returns the first partial match that is withing (). So group 1 will return the first (\\S) part and group 2 will return the second (\\S) of the regex statement. These are respectively (for the first match): "this" and "is"