正则表达式

Pydoc Pydoc




根据正则表达式过滤输入字符串元素。也可以根据匹配的组对其进行转换。

示例

在以下示例中,我们使用包含文本字符串的 PCollection 创建一个管道。然后,我们使用 Regex 转换来使用 正则表达式 搜索、替换和拆分文本元素。

您可以使用工具来帮助您创建和测试正则表达式,例如 regex101。请确保在左侧边栏中指定 Python 风格。

例如,我们来看看 正则表达式 (?P<icon>[^\s,]+), *(\w+), *(\w+)。它匹配任何不是空格 \s ([ \t\n\r\f\v]) 或逗号 , 的内容,直到找到逗号,并将该内容存储在名为 icon 的命名组中,这甚至可以匹配 utf-8 字符串。然后它匹配任意数量的空格,后面跟着至少一个单词字符 \w ([a-zA-Z0-9_]),该字符存储在第二个组中以表示名称。它对第三组中的持续时间也执行相同的操作。

注意:为了避免在正则表达式中出现意外的字符串转义,建议使用 原始字符串,例如 r'raw-string' 而不是 'escaped-string'

示例 1:正则表达式匹配

Regex.matches 只保留与正则表达式匹配的元素,并返回匹配的组。参数 group 默认设置为 0(整个匹配),但可以设置为组编号,例如 3,或设置为命名组,例如 'icon'

Regex.matches 从字符串开头开始匹配正则表达式。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

要从字符串的任意位置而不是开头开始匹配,请使用 Regex.find(regex)

示例 2:使用所有组进行正则表达式匹配

Regex.all_matches 只保留与正则表达式匹配的元素,并返回所有组作为一个列表。组按在正则表达式中遇到的顺序返回,包括 group 0(整个匹配)作为第一个组。

Regex.all_matches 从字符串开头开始匹配正则表达式。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

要从字符串的任意位置而不是开头开始匹配,请使用 Regex.find_all(regex, group=Regex.ALL, outputEmpty=False)

示例 3:将正则表达式匹配转换为键值对

Regex.matches_kv 只保留与正则表达式匹配的元素,并使用指定的组返回键值对。参数 keyGroup 设置为组编号,例如 3,或设置为命名组,例如 'icon'。参数 valueGroup 默认设置为 0(整个匹配),但可以设置为组编号,例如 3,或设置为命名组,例如 'icon'

Regex.matches_kv 从字符串开头开始匹配正则表达式。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

要从字符串的任意位置而不是开头开始匹配,请使用 Regex.find_kv(regex, keyGroup)

示例 4:正则表达式查找

Regex.find 只保留与正则表达式匹配的元素,并返回匹配的组。参数 group 默认设置为 0(整个匹配),但可以设置为组编号,例如 3,或设置为命名组,例如 'icon'

Regex.find 匹配字符串中正则表达式的第一个出现位置。要从开头开始匹配,请在正则表达式的开头添加 '^'。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

如果您需要仅从开头开始匹配,请考虑使用 Regex.matches(regex)

示例 5:正则表达式查找所有

Regex.find_all 返回正则表达式所有匹配项的列表,并返回匹配的组。参数 group 默认设置为 0,但可以设置为组编号,例如 3,设置为命名组,例如 'icon',或设置为 Regex.ALL 以返回所有组。参数 outputEmpty 默认设置为 True,但可以设置为 False 以跳过未找到匹配项的元素。

Regex.find_all 匹配字符串中找到的正则表达式的所有出现位置。要从开头开始匹配,请在正则表达式的开头添加 '^'。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

如果您需要仅从开头开始匹配所有组,请考虑使用 Regex.all_matches(regex)

示例 6:正则表达式查找作为键值对

Regex.find_kv 返回正则表达式所有匹配项的列表,并使用指定的组返回键值对。参数 keyGroup 设置为组编号,例如 3,或设置为命名组,例如 'icon'。参数 valueGroup 默认设置为 0(整个匹配),但可以设置为组编号,例如 3,或设置为命名组,例如 'icon'

Regex.find_kv 匹配字符串中正则表达式的第一个出现位置。要从开头开始匹配,请在正则表达式的开头添加 '^'。要匹配到字符串的结尾,请在正则表达式的末尾添加 '$'

如果您需要仅从开头开始作为键值对匹配,请考虑使用 Regex.matches_kv(regex)

示例 7:正则表达式替换所有

Regex.replace_all 返回字符串,其中所有正则表达式匹配的项都被替换为另一个字符串。您也可以在 replacement 中使用 反向引用

示例 8:正则表达式替换第一个

Regex.replace_first 返回字符串,其中第一个正则表达式匹配的项被替换为另一个字符串。您也可以在 replacement 中使用 反向引用

示例 9:正则表达式拆分

Regex.split 返回由指定正则表达式分隔的字符串列表。参数 outputEmpty 默认设置为 False,但可以设置为 True 以在输出列表中保留空项目。

Pydoc Pydoc