getGroup: Difference between revisions
m (Tweaking page layout and typography) |
m (Typographical tweak) |
||
Line 37: | Line 37: | ||
First off, normally you only need one {{code|\}} in a regex statement, but because MT uses regex itself and the statement is preparsed you need to double escape it, so {{code|\\}}. | First off, normally you only need one {{code|\}} in a regex statement, but because MT uses regex itself and the statement is preparsed you need to double escape it, so {{code|\\}}. | ||
*{{code|S}} = 'everything that is NOT a whitespace' | *{{code|S}} = 'everything that is NOT a whitespace' | ||
*{{code|s}} = 'whitespace | *{{code|s}} = 'whitespace' | ||
*{{code|+}} = '1 or more' | *{{code|+}} = '1 or more' | ||
*{{code|*}} = '0 or more' | *{{code|*}} = '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 20:17, 8 October 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, normally 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"
.
\
while in MT you need \\
.