Match (Regex function): Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Template:Regex:Match subtitle}} | {{Template:Regex:Match subtitle}} | ||
This function tests a Unicode or EBCDIC string against the regular expression in the <var>Regex</var> object. It can also return the contents of capturing groups to a [[Stringlist_class|Stringlist]]. | This function tests a Unicode or EBCDIC string against the regular expression in the <var>Regex</var> object. It can also return the contents of capturing groups to a [[Stringlist_class|Stringlist]]. It provides similar functionality to [[RegexMatch (String function)|RegexMatch]], [[UnicodeRegexMatch (Unicode function)|UnicodeRegexMatch]], and [[RegexCapture (Stringlist function)|RegexCapture]]. | ||
==Syntax== | ==Syntax== | ||
Line 12: | Line 12: | ||
<tr><th>string</th> | <tr><th>string</th> | ||
<td>The Unicode or EBCDIC string to test against the <var>Regex</var> object.</td></tr> | <td>The Unicode or EBCDIC string to test against the <var>Regex</var> object.</td></tr> | ||
<tr><th><var> | <tr><th><var>Start</var></th> | ||
<td>number<br/>The starting position. This value must be between 1 and the length of <var>string</var> plus 1. The default value is 1, which means to start at the beginning of the string.</td></tr> | <td>number<br/>The starting position. This value must be between 1 and the length of <var>string</var> plus 1. The default value is 1, which means to start at the beginning of the string.</td></tr> | ||
<tr><th><var> | <tr><th><var>Capture</var></th> | ||
<td>A <var>Stringlist</var> object that is to receive the capturing group contents if there is a match. Each added item represents a capturing group's value with items added in capturing group order.</td></tr> | <td>A <var>Stringlist</var> object that is to receive the capturing group contents if there is a match. Each added item represents a capturing group's value with items added in capturing group order.</td></tr> | ||
</table> | </table> | ||
==Usage notes== | ==Usage notes== | ||
<ul> | <ul> |
Latest revision as of 15:07, 24 March 2022
Position after match of regex (Regex class)
This function tests a Unicode or EBCDIC string against the regular expression in the Regex object. It can also return the contents of capturing groups to a Stringlist. It provides similar functionality to RegexMatch, UnicodeRegexMatch, and RegexCapture.
Syntax
%number = regex:Match( string, [Start= number], [Capture= stringlist])
Syntax terms
%number | The position in the string after the match. If the string does not match the regular expression, 0 is returned. If the regular expressions matches up to the end of the string, the lenght of the string plus one is returned. |
---|---|
regex | The Regex object |
string | The Unicode or EBCDIC string to test against the Regex object. |
Start | number The starting position. This value must be between 1 and the length of string plus 1. The default value is 1, which means to start at the beginning of the string. |
Capture | A Stringlist object that is to receive the capturing group contents if there is a match. Each added item represents a capturing group's value with items added in capturing group order. |
Usage notes
- There is no Capture method for the Regex class since Match provides capture functionality.
- An advantage of this method over the String RegexMatch method is that this method has a start position parameter.
Examples
The following illustrates how a loop can find all occurrences of a particular pattern in a string and to add those occurrences to a Stringlist:
%pos is float %matches is object stringlist %regex is object regex %str is longstring ... %regex = new("(<[^>]+>)") %pos = 1 %matches = new repeat while %pos %pos = %regex:match(%str, start=%pos, capture=%matches) end repeat
Note that no special check is required for a zero-length string – 1 is a valid start position for a zero-length string and the first Match call for a zero length string will always return 0 in this case.