diff options
Diffstat (limited to 'man/2/regex')
| -rw-r--r-- | man/2/regex | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/man/2/regex b/man/2/regex new file mode 100644 index 00000000..cddc08b5 --- /dev/null +++ b/man/2/regex @@ -0,0 +1,108 @@ +.TH REGEX 2 +.SH NAME +regex \- regular expression recognizer module +.SH SYNOPSIS +.EX +include "regex.m"; +regex := load Regex Regex->PATH; + +compile: fn(e: string, flag: int): (Re, string); +execute: fn(x: Re; s: string): array of (int,int); +executese: fn(x: Re, s: string, se: (int, int), bol: int, eol: int): + array of (int, int); +.EE +.SH DESCRIPTION +Regular expressions are defined by +.IR regexp (6). +.B Compile +returns (as the first element of the result tuple) +a compiled form of the regular expression given in string +.IR e . +If +.I e +is not a valid regular expression, +.B compile +returns the tuple +.BI "(nil" ", diag" ) +where +.I diag +is a diagnostic string. +The effect of +.I flag +is described below. +.PP +.B Execute +matches the compiled regular expression +.I x +against string +.I s. +It returns +.B nil +on no match, otherwise it returns an array. +The element with index 0 gives the character positions +of the first character of some longest leftmost match and +the first character beyond the match. +If the compilation +.I flag +was 0, there are no more elements. +If +.I flag +was 1, there is one element for each pair of +parentheses in the regular expression, counting +left parentheses left to right starting at 1. +The +.IR n th +element gives the position of the last match to the +.IR n th +parenthesized subexpression, or (\-1,\-1) if the subexpression +does not participate in the overall match. +.PP +.B Executese +is similar to +.B execute +but allows the start and end points in the string to be specified, +as tuple +.IR se : +.BI ( "start , end" ) , +where +.I start +is the index in +.I s +of the initial character to be matched, +and +.I end +is the index in +.I s +of the first character beyond the substring to be matched +(and can be the length of +.IR s ). +If +.I bol +is non-zero, the +initial character is at the beginning of a line, +allowing an initial match by the regular expression operator +.RB ` ^ '; +if +.I eol +is non-zero, the +last character is at the end of a line, allowing a match +by the operator `\f5$\fP'. +.SH EXAMPLES +.EX +(re, nil) := regex->compile("(thick )*(chocolate |raspberry )?"+ + "(topp|fill)ing", 0); + +(re, nil) := regex->compile("[ABCb-z]+", 0); +a := regex->execute(re, s:="aAbBcCdD"); +(beg, end) := a[0]; +s[beg:end] == "AbBcCd"; + +(re, nil) := regex->compile("a*b*", 0); +a := regex->execute(re, "bbaabb"); +(beg, end) := a[0]; +(beg, end) == (0,2); +.EE +.SH SOURCE +.B /appl/lib/regex.b +.SH SEE ALSO +.IR regexp (6) |
