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 |
|
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 |
|
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 |
|
right |
|
subexpr |
|
next |
|
cset |
|
index |
int |
tail |
uint8? |
正则表达式解析树中的单个节点。
- Regex
Regex 字段是
root |
|
match |
uint8? |
groups |
array<tuple<range;string>> |
earlyOut |
|
canEarlyOut |
bool |
正则表达式。
22.3. 汇编和验证
- visit_top_down(node: ReNode?; blk: block<(var n:ReNode?):void> const)
argument |
argument type |
---|---|
node |
|
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 |
|
如果枚举编译正确,则返回 true
- regex_compile(re: Regex; expr: string const)
regex_compile returns bool
argument |
argument type |
---|---|
re |
|
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 |
|
编译正则表达式。 编译表达式的有效性由 is_valid 检查。
- regex_debug(regex: Regex const)
argument |
argument type |
---|---|
regex |
regex::Regex const |
以人类可读的形式打印正则表达式及其相关信息。
- debug_set(cset: CharSet)
argument |
argument type |
---|---|
cset |
|
以人类可读的形式打印字符集。
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 |
|
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 |
|
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 |
|
rnd |
|
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 |
|
str |
string const |
blk |
block<(at:string const):string> const |
遍历 str 中给定正则表达式的所有匹配项。