ure – 简单的正则表达式

    该模块实现了相应CPython模块的子集,如下所述。 有关更多信息,请参阅原始CPython文档:re.

    该模块实现了正则表达式操作。 支持的正则表达式语法是CPythonre模块的子集(实际上是POSIX扩展正则表达式的子集)。

    支持的运算符和特殊序列

    • . : 匹配任何字符。

    • [...] : 匹配字符集。 支持单个字符和范围,包括否定集(例如[^ a-c])。

    • ^ : 匹配字符串的开头。

    • $ : 匹配字符串的结尾。

    • ? : 匹配零个或前一个子模式之一。

    • * : 匹配前一个子模式的零个或多个。

    • + : 匹配前一个子模式中的一个或多个。

    • ?? : 非贪婪版的,匹配零或一,偏好为零。

    • *? : *的非贪婪版本,匹配零或更多,优先选择最短匹配。

    • +? : 非贪婪的“+”版本,匹配一个或多个,优先匹配最短。

    • | : 匹配此运算符的左侧或右侧子模式。

    • (...) : 分组。 每个组都在捕获(它捕获的子字符串可以使用`match.group()方法访问)。

    • \d : 匹配数字。 相当于[0-9]

    • \D : 匹配非数字。 相当于[^ 0-9]

    • \s :

    • \S : 匹配空白。 相当于 [^ \t-\r].

    • \w : 匹配“单词字符”(仅限ASCII)。 相当于 [A-Za-z0-9_].

    • \W : 匹配非“单词字符”(仅限ASCII)。 相当于 [^A-Za-z0-9_].

    • \ : 转义字符。 除了上面列出的那些之外,反斜杠后面的任何其他字符都是字面意思。 例如,\*等同于文字*(不被视为*运算符)。 请注意,\r\n,等不是专门处理的,并且相当于文字字母rn等。因此,不建议使用原始Python字符串(r“”)用于正则表达式。 例如,r“\r \n”用作正则表达式时相当于“rn”。 要匹配CR后跟LF的字符,请使用"\r\n"

    不支持的表达式

    • 重复计算 ({m,n})
    • 命名组 ((?P<name>...))
    • 非捕获组 ((?:...))
    • 更高级的断言 (\b, \B)
    • \r\n这样的特殊字符转义 - 使用Python自己的转义
    • 其它

    例子:

    import ure
    
    # As ure doesn't support escapes itself, use of r"" strings is not
    # recommended.
    regex = ure.compile("[\r\n]")
    
    regex.split("line1\rline2\nline3\r\n")
    
    # Result:
    # ['line1', 'line2', 'line3', '', '']
    

    方法

    ure.compile(regex_str[, flags])

    编译正则表达式, 返回regex 对象。

    ure.match(regex_str, string)

    编译regex_str并匹配字符串。 匹配始终从字符串中的起始位置开始。

    ure.search(regex_str, string)

    编译regex_str并在字符串中搜索它。 与match不同,这将搜索字符串以匹配正则表达式的第一个位置(如果正则表达式被锚定,它仍然可以是0)。

    ure.sub(regex_str, replace, string, count=0, flags=0)

    编译regex_str并在字符串中搜索它,用replace替换所有匹配项,并返回新字符串。

    replace可以是字符串或函数。 如果它是一个字符串,那么\<number>\g<number>形式的转义序列可用于扩展到相应的组(或不匹配组的空字符串)。 如果replace是一个函数,那么它必须采用一个参数(匹配)并且应该返回一个替换字符串。

    如果指定了count并且非零,那么在进行许多替换之后,替换将停止。 flags参数被忽略。

    注意:此函数的可用性取决于MicroPython port

    ure.DEBUG

    标记值,显示有关已编译表达式的调试信息。 (可用性取决于MicroPython 移植实现。)

    Regex 对象

    编译了的正则表达式。 使用ure.compile()创建此类的实例。

    regex.match(string) regex.search(string) regex.sub(replace, string, count=0, flags=0)

    类似于模块级函数match()search()sub()。 如果将相同的正则表达式应用于多个字符串,则使用方法会更高效。

    regex.split(string, max_split=-1)

    使用正则表达式拆分字符串。 如果给出 max_split,则指定要执行的最大拆分数。 返回字符串列表(如果指定了,则最多可以有 max_split + 1 个元素)。

    Match 对象

    匹配match()search()方法返回的对象,并传递给sub()中的替换函数。

    match.group(index)

    返回匹配(子)字符串。 整个匹配的索引为0,每个捕获组的索引为1和更高。 仅支持数字组。

    match.groups()

    返回包含匹配组的所有子串的元组。

    注意:此方法的可用性取决于MicroPython 移植实现

    match.start([index]) match.end([index])

    返回匹配的子字符串组的开头或结尾的原始字符串中的索引。 index默认为整个组,否则将选择一个组。

    注意:这些方法的可用性取决于MicroPython 移植实现

    match.span([index])

    返回2元组(match.start(index),match.end(index))

    注意:此方法的可用性取决于MicroPython 移植 是否实现。