RegexReplaceCorresponding (Stringlist function): Difference between revisions
m (1 revision) |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Template:Stringlist:RegexReplaceCorresponding subtitle}} | {{Template:Stringlist:RegexReplaceCorresponding subtitle}} | ||
<p class="warn"><b>This method is deprecated and should not be used.</b></p> | |||
This method searches a given string for matches to one of multiple regular expressions contained in a list, and it replaces found matches with or according to a string contained in a list that corresponds to the regex list. | This method searches a given string for matches to one of multiple regular expressions contained in a list, and it replaces found matches with or according to a string contained in a list that corresponds to the regex list. | ||
Line 24: | Line 27: | ||
<tr><th>replacementList</th> | <tr><th>replacementList</th> | ||
<td><p>A <var>Stringlist</var>, each of whose items is a potential replacement string for the substring of <var class="term">inString</var> that is matched by the corresponding item of <var class="term">sl</var>.</p> | <td><p>A <var>Stringlist</var>, each of whose items is a potential replacement string for the substring of <var class="term">inString</var> that is matched by the corresponding item of <var class="term">sl</var>.</p> | ||
<p>Except when the <code>A</code> option is specified (as described below for the <var>Options</var> argument), you can include <code>$0</code> markers in <var class="term">replacementList</var> items as placeholders for the substring of <var class="term">inString</var> that the item matches.</p> | <p> | ||
<p><code>xxx$0</code> is an example of a valid replacement string, and <code>xxx</code> concatenated with the portion of <var class="term">inString</var> that gets matched (by the corresponding <var class="term">sl</var> item) constitute the replacement string.</p> | Except when the <code>A</code> option is specified (as described below for the <var>Options</var> argument), you can include <code>$0</code> markers in <var class="term">replacementList</var> items as placeholders for the substring of <var class="term">inString</var> that the item matches.</p> | ||
<p>Any character after the dollar sign other than a zero is an error. Multiple zeroes (as many as 9) are permitted; a digit following such a string of zeroes must be escaped.</p> | <p> | ||
<p>You can also use the format <code>$m0</code>, where <i>m</i> is one of the following modifiers:</p> | <code>xxx$0</code> is an example of a valid replacement string, and <code>xxx</code> concatenated with the portion of <var class="term">inString</var> that gets matched (by the corresponding <var class="term">sl</var> item) constitute the replacement string.</p> | ||
<p> | |||
Any character after the dollar sign other than a zero is an error. Multiple zeroes (as many as 9) are permitted; a digit following such a string of zeroes must be escaped.</p> | |||
<p> | |||
You can also use the format <code>$m0</code>, where <i>m</i> is one of the following modifiers:</p> | |||
<table class="syntaxNested"> | <table class="syntaxNested"> | ||
<tr><th><var>U</var> or <var>u</var></th> | <tr><th><var>U</var> or <var>u</var></th> | ||
Line 36: | Line 43: | ||
</table> | </table> | ||
<p> | <p> | ||
The only characters you can escape in a replacement string are dollar sign (<code>$</code>), backslash (<code>\</code>), and the digits <code>0</code> through <code>9</code>. So only these escapes are respected:<code>\\</code>, <code>\$</code>, and <code>\0</code> through <code>\9</code>. No other escapes are allowed in a replacement string & | The only characters you can escape in a replacement string are dollar sign (<code>$</code>), backslash (<code>\</code>), and the digits <code>0</code> through <code>9</code>. So only these escapes are respected:<code>\\</code>, <code>\$</code>, and <code>\0</code> through <code>\9</code>. No other escapes are allowed in a replacement string — this includes "shorthand" escapes like <code>\d</code> — and an "unaccompanied" backslash (<code>\</code>) is an error.</p> | ||
<p>For example, since the scan for the number that accompanies the meta-$ stops at the first nonnumeric, you use <code>1$0\0</code> to indicate that the first matched substring should go between the numbers <code>1</code> and <code>0</code> in the replacement string.</p></td></tr> | <p> | ||
For example, since the scan for the number that accompanies the meta-$ stops at the first nonnumeric, you use <code>1$0\0</code> to indicate that the first matched substring should go between the numbers <code>1</code> and <code>0</code> in the replacement string.</p></td></tr> | |||
<tr><th><var>Options</var></th> | <tr><th><var>Options</var></th> | ||
Line 86: | Line 94: | ||
<li>All errors in <var>RegexReplaceCorresponding</var>, including invalid argument(s) result in request cancellation. | <li>All errors in <var>RegexReplaceCorresponding</var>, including invalid argument(s) result in request cancellation. | ||
<li>It is strongly recommended that you protect your environment from regular expression processing demands on PDL and STBL space by setting, say, <code>UTABLE LPDLST 3000</code> and <code>UTABLE LSTBL 9000</code>. See [[ | <li>It is strongly recommended that you protect your environment from regular expression processing demands on PDL and STBL space by setting, say, <code>UTABLE LPDLST 3000</code> and <code>UTABLE LSTBL 9000</code>. See [[Regex processing#SOUL programming considerations|SOUL programming considerations]]. | ||
<li>Items in <var class="term">sl</var> must <b><i>not</i></b> exceed 6124 bytes. However, the <var class="term">inString</var> value and items in <var class="term">replacementList</var> may exceed 6124 bytes.<li>For information about additional methods and $functions that support regular expressions, see [[Regex_processing | <li>Items in <var class="term">sl</var> must <b><i>not</i></b> exceed 6124 bytes. However, the <var class="term">inString</var> value and items in <var class="term">replacementList</var> may exceed 6124 bytes.<li>For information about additional methods and $functions that support regular expressions, see [[Regex_processing]]. | ||
</ul> | |||
==Examples== | ==Examples== | ||
In the following code fragment, the second item in regex list <code>%regList</code> is the first to match the input string <code>inStr</code>. The subexpression in that item performs no special capturing function — the parentheses are for grouping only. Since <code>%opt='g'</code> is specified, three replacements are made (using the corresponding, second, item in <code>%repList</code>): | In the following code fragment, the second item in regex list <code>%regList</code> is the first to match the input string <code>inStr</code>. The subexpression in that item performs no special capturing function — the parentheses are for grouping only. Since <code>%opt='g'</code> is specified, three replacements are made (using the corresponding, second, item in <code>%repList</code>): | ||
<p class="code"> | <p class="code">... | ||
%regList = new | %regList = new | ||
text to %regList | text to %regList |
Latest revision as of 00:02, 11 January 2022
Replace substrings that match regex with items in a Stringlist (Stringlist class)
This method is deprecated and should not be used.
This method searches a given string for matches to one of multiple regular expressions contained in a list, and it replaces found matches with or according to a string contained in a list that corresponds to the regex list.
The regex list items are treated as mutually exclusive alternatives, and the function stops as soon as an item matches and the replacement is made. A "global" option is also available to continue searching and replacing within the given string using the matching regex item until no more matches are found.
RegexReplaceCorresponding uses the rules of regular expression matching (information about which is provided in "Regex processing rules").
RegexReplaceCorresponding accepts two required and two optional arguments, and it returns a string.
Syntax
%outString = sl:RegexReplaceCorresponding( inString, replacementList, - [Options= string], - [Status= %output]) Throws InvalidRegex
Syntax terms
outString | A string set to the value of inString with each matched substring replaced by the value of the replacementList item that corresponds to the matching sl item. | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sl | A Stringlist object whose items are interpreted as regular expressions and applied to the inString value. | ||||||||||||
inString | The input string, to which the regular expressions in sl are applied. | ||||||||||||
replacementList | A Stringlist, each of whose items is a potential replacement string for the substring of inString that is matched by the corresponding item of sl.
Except when the
Any character after the dollar sign other than a zero is an error. Multiple zeroes (as many as 9) are permitted; a digit following such a string of zeroes must be escaped.
You can also use the format
The only characters you can escape in a replacement string are dollar sign (
For example, since the scan for the number that accompanies the meta-$ stops at the first nonnumeric, you use | ||||||||||||
Options | This is an optional, name required, parameter supplying a string of single-letter options, which may be specified in uppercase or lowercase, in any combination, and blank separated or not as you prefer. For more information about these options, see "Common regex options".
| ||||||||||||
Status | The Status argument (name required) is optional; if specified, it is set to an integer code. These values are possible:
|
Usage notes
- All errors in RegexReplaceCorresponding, including invalid argument(s) result in request cancellation.
- It is strongly recommended that you protect your environment from regular expression processing demands on PDL and STBL space by setting, say,
UTABLE LPDLST 3000
andUTABLE LSTBL 9000
. See SOUL programming considerations. - Items in sl must not exceed 6124 bytes. However, the inString value and items in replacementList may exceed 6124 bytes.
- For information about additional methods and $functions that support regular expressions, see Regex_processing.
Examples
In the following code fragment, the second item in regex list %regList
is the first to match the input string inStr
. The subexpression in that item performs no special capturing function — the parentheses are for grouping only. Since %opt='g'
is specified, three replacements are made (using the corresponding, second, item in %repList
):
... %regList = new text to %regList abcx a(bc?) abcd end text %repList = new text to %repList & && &&& end text %inStr = 'abc1abc2abcd' %opt='g' %outStr = %regList:RegexReplaceCorresponding(%inStr, %repList, Options=%opt, Status=%st) Print 'Status from ReplaceCorresponding is ' %st Print 'Output String: ' %outStr ...
The result would be:
Status from ReplaceCorresponding is 3 Output String: &&1&&2&&d