SYNOPSYS import "clive/sre" const Fwd = iota ... var Debug = false func Match(sre, text string) ([]string, error) func Repl(matches []string, s string) string func Compile(re []rune, dir Dir) (prg *ReProg, err error) func CompileStr(re string, dir Dir) (prg *ReProg, err error) type Dir int type Range struct { ... } type ReProg struct { ... } func Compile(re []rune, dir Dir) (prg *ReProg, err error) func CompileStr(re string, dir Dir) (prg *ReProg, err error) type Text interface { ... } DESCRIPTION Structural Regular Expressions on rune based text. Besides those understood by Sam, these ones have \w and \s to match unicode alpha and space runes (can be also used within character classes). Matching does not wrap if no further matches are found. CONSTANTS const ( Fwd = iota // compile for forward search in text Bck // compile for backward search in text ) Argument to Compile. TYPES type Dir int Argument to Compile. type Range struct { P0, P1 int } A selection in the string implied by a regexp. type ReProg struct { // contains filtered or unexported fields } A compiled regexp func Compile(re []rune, dir Dir) (prg *ReProg, err error) Compile re as a regexp to search forward or backward in text func CompileStr(re string, dir Dir) (prg *ReProg, err error) Compile re as a regexp to match in text, forward if dir is Fwd, and backward otherwise. func (prg *ReProg) Exec(txt Text, start int, end int) []Range Execute prg to search in s starting at s[start] and not going past s[end], when compiled to search forward. When compiled to search backward, it starts at s[start] but goes backwards and considers s[end] the end of text. Like ExecStr but for a general rune provider. Returns nil if there is no match. Otherwise, the returned slice contains at 0 the match for the full expression and in further elements the matching ranges for subexpressions matched (i.e, \1, \2, ...). The matched substrings are s[range.P1:range.P1]. func (prg *ReProg) ExecRunes(s []rune, start int, end int) []Range Like Exec but for []rune See Exec for more details. func (prg *ReProg) ExecStr(s string, start int, end int) []Range Like Exec but for strings. See Exec for more details. func (prg *ReProg) Match(text string) []string Like Match, for a compiled sre. func (prg *ReProg) String() string Debug: return a printable program, including the entire NFA machine program. type Text interface { Len() int Getc(at int) rune } Interface for a rune provider to match a regexp against it. FUNCTIONS func Match(sre, text string) ([]string, error) Match (forward) the given sre against the given string, return the (sub)strings matching (nil if none) and any error. func Repl(matches []string, s string) string Replace in the given string \n with the corresponding entry in matches. Only \0 to \9 accepted. VARIABLES var Debug = false Set to true to enable debug of rexp execution. User's manual, 2nd ed. Section 2 Copyright © LSUB 2014-2016