# gmatch

Definition: | include builtins\regex.e string res = gmatch(sequence re, string target, res)
Description: | Draft - this is a very simple routine that took very little time or effort (or thought) to write, and may change in later releases. Applies the regular expression re (in string or pre-compiled format) to target and returns res with any substitutions for \1 to \9, or -1 if no match could be found. re: a regular expression such as "a(b*)" or the result of applying regex_compile() to such a string. target: a string to be matched against the regular expression. res: a string containing \1 to \9 that should be replaced with the results of any match. Returns: an updated res or -1 if no match could be found. Aside: probably better to return target rather than -1, but improvements really should be driven by those using this in anger, which simply ain’t me. To achieve what Java manages with {`_(.+)_`,`<em>$1</em>`} this (currently) needs {`(.*)__(.+)__(.*)`,`\1<em>\2</em>\3`}, but I’m not dead set on that, specifically the extra outer groups, nor would I be against additional control flags or more than two of these little helper functions.
pwa/p2js: | Supported.
Example: |
    ?gmatch(`(\w+) changed to (\w+)`,"red changed to green",`\2 <- \1`) -- yields "green <- red"
See Also: | gsub
Technicalia | Future versions may also permit \0 in res, if that would be useful.