22. 正则表达式库

experimental REGEX 模块实现了正则表达式解析器和模式匹配功能。

目前,该模块处于早期阶段,只实现了极少数基本的 regex 操作。

所有函数和符号都在 “regex ”模块中,请使用 require 访问该模块。

require daslib/regex

22.1. 类型别名

CharSet = uint[8]

表示 8 位字符集的位数组。

ReGenRandom = iterator<uint>

random generator input for the regular expression generation

MaybeReNode is a variant type

value

regex::ReNode ?

nothing

void?

单一正则表达式节点或无。

22.2. 枚举

ReOp

Char

0

Set

1

Any

2

Eos

3

Group

4

Plus

5

Star

6

Question

7

Concat

8

Union

9

正则表达式操作类型。

ReNode

ReNode 字段是

op

regex::ReOp

id

int

fun2

function<(regex: regex::Regex ;node: regex::ReNode ?;str:uint8? const):uint8?>

gen2

function<(node: regex::ReNode ?;rnd: ReGenRandom ;str: strings::StringBuilderWriter ):void>

at

range

text

string

textLen

int

all

array< regex::ReNode ?>

left

regex::ReNode ?

right

regex::ReNode ?

subexpr

regex::ReNode ?

next

regex::ReNode ?

cset

CharSet

index

int

tail

uint8?

正则表达式解析树中的单个节点。

Regex

Regex 字段是

root

regex::ReNode ?

match

uint8?

groups

array<tuple<range;string>>

earlyOut

CharSet

canEarlyOut

bool

正则表达式。

22.3. 汇编和验证

visit_top_down(node: ReNode?; blk: block<(var n:ReNode?):void> const)

argument

argument type

node

regex::ReNode ?

blk

block<(n: regex::ReNode ?):void> const

visits parsed regular expression tree, parents first

is_valid(re: Regex)

is_valid returns bool

argument

argument type

re

regex::Regex

如果枚举编译正确,则返回 true

regex_compile(re: Regex; expr: string const)

regex_compile returns bool

argument

argument type

re

regex::Regex

expr

string const

编译正则表达式。 编译表达式的有效性由 is_valid 检查。

regex_compile(expr: string const)

regex_compile returns regex::Regex

argument

argument type

expr

string const

编译正则表达式。 编译表达式的有效性由 is_valid 检查。

regex_compile(re: Regex)

regex_compile returns regex::Regex

argument

argument type

re

regex::Regex

编译正则表达式。 编译表达式的有效性由 is_valid 检查。

regex_debug(regex: Regex const)

argument

argument type

regex

regex::Regex const

以人类可读的形式打印正则表达式及其相关信息。

debug_set(cset: CharSet)

argument

argument type

cset

CharSet

以人类可读的形式打印字符集。

22.4. 访问

regex_group(regex: Regex const; index: int const; match: string const)

regex_group returns string

argument

argument type

regex

regex::Regex const

index

int const

match

string const

返回给定组索引和匹配结果的字符串。

regex_foreach(regex: Regex; str: string const; blk: block<(at:range const):bool> const)

argument

argument type

regex

regex::Regex

str

string const

blk

block<(at:range const):bool> const

遍历 str 中给定正则表达式的所有匹配项。

22.5. Match

regex_match(regex: Regex; str: string const; offset: int const)

regex_match returns int

argument

argument type

regex

regex::Regex

str

string const

offset

int const

返回 str 中正则表达式的第一个匹配项。 如果指定了 offset,则不会首先匹配这么多的符号。

22.6. 生成

re_gen_get_rep_limit()

re_gen_get_rep_limit returns uint

repetition limit for the ‘+’ and ‘*’ operations of the regex generation

re_gen(re: Regex; rnd: ReGenRandom)

re_gen returns string

argument

argument type

re

regex::Regex

rnd

ReGenRandom

generates random string which would match regular expression

22.7. 未分类

regex_replace(regex: Regex; str: string const; blk: block<(at:string const):string> const)

regex_replace returns string const

argument

argument type

regex

regex::Regex

str

string const

blk

block<(at:string const):string> const

遍历 str 中给定正则表达式的所有匹配项。