getGroup: Difference between revisions
Jump to navigation
Jump to search
Verisimilar (talk | contribs) 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"