getGroup: Difference between revisions
No edit summary |
No edit summary |
||
Line 38: | Line 38: | ||
*S = 'everything that is NOT a whitespace' | *S = 'everything that is NOT a whitespace' | ||
*s = 'whitespace | *s = 'whitespace | ||
*+ = ' | *+ = '1 or more' | ||
*<nowiki>*</nowiki> = '0 or more | *<nowiki>*</nowiki> = '0 or more | ||
Have a look [http://www.addedbytes.com/download/regular-expressions-cheat-sheet-v2/png/ here] for an overview | Have a look [http://www.addedbytes.com/download/regular-expressions-cheat-sheet-v2/png/ here] for an overview |
Revision as of 07:20, 28 September 2012
getGroup() Function
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
Example explained
First off, normaly you only need one \ in a regex statement, but because MT uses regex itself and the statement is preparsed you need to double escape it, so \\.
- S = 'everything that is NOT a whitespace'
- s = 'whitespace
- + = '1 or more'
- * = '0 or more
Have a look here for an overview
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.
- Every group after that will return partial matches that are within ().
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"
Here a link to test your regex statements (remember that for this applet you only use one \ while in MT you need \\