正则表达式功能#
本页面指定了当前由接受正则表达式模式的libcudf字符串列API支持的正则表达式(regex)功能:
cudf::strings::contains_re()
cudf::strings::matches_re()
cudf::strings::count_re()
cudf::strings::extract()
cudf::strings::extract_all_record()
cudf::strings::findall()
cudf::strings::find_re()
cudf::strings::replace_re()
cudf::strings::replace_with_backrefs()
cudf::strings::split_re()
cudf::strings::split_record_re()
详细信息基于在https://www.regular-expressions.info/reference.html上记录的功能。
注意: 交替字符是管道字符 |,而不是本页表格中包含的字符。在由doxygen渲染的表格markdown中包含管道字符时存在问题。
默认情况下,只有 \n 字符被识别为换行符。 [cudf::strings::regex_flags::EXT_NEWLINE](@ref cudf::strings::regex_flags) 增加了换行符的集合,包括:
段落分隔符(Unicode:
2029,UTF-8:E280A9)行分隔符 (Unicode:
2028, UTF-8:E280A8)下一行 (Unicode:
0085, UTF-8:C285)回车符(Unicode:
000D,UTF-8:0D)
无效的正则表达式模式将导致未定义的行为。这包括但不限于以下情况:
当特殊字符(列在下表字符表的第三行中)旨在作为字面量匹配时,不进行转义。
未匹配的成对特殊字符,如
(),[], 和{}。空的组、类或量词。即,
()和[]没有包含表达式,以及{}没有有效的整数。字符类中的不完整范围,如
[-z]、[a-]和[-]。不合格的量词。也就是说,没有前面匹配项的量词,如
*a,a⎮?,(+),{2}a, 等。
支持的功能#
字符#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
字面字符 |
除了 |
除了列出的特殊字符外,所有字符都匹配它们自身的单个实例 |
|
字面量花括号 |
|
|
|
反斜杠转义元字符 |
|
反斜杠转义特殊字符以抑制它们的特殊含义 |
|
十六进制转义 |
|
匹配ASCII表中指定位置的字符 |
|
字符转义 |
|
分别匹配换行符(LF)、回车符(CR)和制表符 |
|
字符转义 |
|
匹配“警报”或“铃声”控制字符(ASCII 0x07) |
|
字符转义 |
|
匹配换页控制字符(ASCII 0x0C) |
|
NULL 转义 |
|
匹配 NULL 字符 |
|
八进制转义 |
|
匹配ASCII表中指定位置的字符 |
|
基本功能#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
点 |
. (点) |
匹配除换行符之外的任何单个字符。可选择匹配换行符。当遇到 |
. 匹配x或(几乎)任何其他字符 |
交替 |
|
使正则表达式引擎匹配左侧部分或右侧部分。可以串联成一系列交替。 |
|
字符类#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
字符类 |
|
|
|
字面字符 |
除了 |
除了列出的特殊字符外,所有字符都是字面字符,它们会将自己添加到字符类中。 |
|
反斜杠转义元字符 |
|
反斜杠用于转义特殊字符,以抑制它们的特殊含义。 |
|
范围 |
|
向字符类添加一系列字符。如果‘ |
|
否定字符类 |
|
否定字符类,使其匹配不在字符类中列出的单个字符。 |
|
字面量左括号 |
|
左方括号是一个字面量字符,它向字符类添加一个左方括号。 |
|
字符转义 |
|
分别向字符类添加一个换行符、回车符或制表符。 |
|
字符转义 |
|
将“警报”或“铃声”控制字符(ASCII 0x07)添加到字符类中。 |
|
字符转义 |
|
将退格控制字符(ASCII 0x08)添加到字符类中。 |
|
字符转义 |
|
将换页控制字符(ASCII 0x0C)添加到字符类中。 |
|
简写字符类#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
简写 |
|
将所有数字添加到字符类中。如果在字符类外部使用,则匹配单个数字。可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制行为,以仅包括 |
|
简写 |
|
将所有单词字符添加到字符类中。如果在字符类外部使用,则匹配单个单词字符。可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制行为,以仅包括 |
|
简写 |
|
将所有空白字符添加到字符类中。如果在字符类外使用,则匹配单个空白字符。可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制行为,以仅包括 |
|
简写 |
|
将所有非数字字符添加到字符类中。如果在字符类外部使用,则匹配一个非数字字符。行为可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制 |
|
简写 |
|
将所有非单词字符添加到字符类中。如果在字符类外部使用,则匹配一个非单词字符。行为可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制 |
[ |
简写 |
|
将所有非空白字符添加到字符类中。如果在字符类外部使用,则匹配一个非空白字符。行为可以通过[cudf::strings::regex_flags::ASCII](@ref cudf::strings::regex_flags)控制。 |
|
锚点#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
字符串锚点 |
|
匹配字符串的开头 |
|
行锚点 |
|
当指定了 [cudf::strings::regex_flags::MULTILINE](@ref cudf::strings::regex_flags) 时:除了在字符串开头匹配外,还在每个换行符后匹配,从而匹配字符串中每行的开头。 |
|
字符串锚点 |
|
匹配字符串的末尾以及字符串中最后一个换行符之前的位置 |
|
行锚点 |
|
当指定了[cudf::strings::regex_flags::MULTILINE](@ref cudf::strings::regex_flags)时:除了在字符串末尾匹配外,还在每个换行符前匹配,从而在字符串的每行末尾匹配。 |
|
字符串锚点 |
|
匹配字符串的开头 |
|
字符串锚点 |
|
匹配字符串的末尾 |
|
单词边界#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
单词边界 |
|
匹配一个位置,该位置后面是一个单词字符但前面不是单词字符,或者前面是一个单词字符但后面不是单词字符。 |
|
单词边界 |
|
匹配一个位置,该位置前后都是单词字符,或者前后都不是单词字符。 |
|
量词#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
贪婪量词 |
|
使前面的项可选。贪婪的,因此如果可能,可选项会包含在匹配中。 |
|
贪婪量词 |
|
重复前一个项目零次或多次。贪婪模式,尽可能多地匹配项目,直到尝试减少前一个项目的匹配次数,直到前一个项目完全不匹配为止。 |
|
贪婪量词 |
|
重复前一个项目一次或多次。贪婪模式,因此会尽可能多地匹配项目,然后再尝试匹配较少的项目,直到前一个项目只匹配一次。 |
|
懒惰量词 |
|
使前面的项变为可选项。懒惰模式,因此如果可能的话,可选项在匹配时会被排除。 |
|
懒惰量词 |
|
重复前一个项目零次或多次。懒惰模式,引擎首先尝试跳过前一个项目,然后再尝试增加前一个项目的匹配次数。 |
|
懒惰量词 |
|
重复前一项一次或多次。懒惰模式,因此引擎首先只匹配前一项一次,然后尝试逐步增加前一项的匹配次数。 |
|
固定量词 |
|
将前一个项目重复恰好 |
|
贪婪量词 |
|
重复前一个项目 |
|
贪婪量词 |
|
重复前一个项目至少 |
|
懒惰量词 |
|
重复前一个项目在 |
|
懒惰量词 |
|
重复前一个项目 |
|
分组#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
捕获组 |
|
括号将它们之间的正则表达式分组。它们将匹配的正则表达式捕获到一个编号的组中。它们允许您将正则表达式运算符应用于整个分组的正则表达式。 |
|
非捕获组 |
|
非捕获括号将正则表达式分组,以便您可以应用正则表达式操作符,但不捕获任何内容。 |
|
替换反向引用#
功能 |
语法 |
描述 |
示例 |
|---|---|---|---|
反向引用 |
|
插入由捕获组1到99匹配的文本 |
在 |
反向引用 |
|
插入由捕获组1到99匹配的文本 |
在 |
完全匹配 |
|
插入整个正则表达式匹配的内容 |
在 |