getGroup

From RPTools Wiki
Revision as of 07:04, 28 September 2012 by Wolph42 (talk | contribs)
Jump to navigation Jump to search

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"