ure – 简单的正则表达式

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

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

支持的运算符和特殊序列是:

.

匹配任何字符。

[...]

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

^

匹配字符串的开头。

$
?

匹配前一个子模式的零个或一个。

*

匹配零个或多个前一个子模式。

+

匹配一个或多个先前的子模式。

??

的非贪婪版本?,匹配零或一,优先选择零。

*?

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

+?

的非贪婪版本+,匹配一个或多个,优先选择最短匹配。

|

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

(...)

分组。每个组都在捕获(它捕获的子字符串可以通过match.group()方法访问)。

\d

匹配数字。相当于 [0-9].

\D

匹配非数字。相当于[^0-9].

\s

匹配空格。相当于。[ \t-\r].

\S

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

\w

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

\W

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

\

转义字符。反斜杠后面的任何其他字符,除了上面列出的那些,都是按字面意思理解的。例如,\*等效于字面量* (不被视为 * 运算符)。需要注意的是 \r, \n等没有特殊处理,并且将相当于文字字母r, n等。由于这一点,不推荐使用原始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])

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

ure.match(regex_str, string)

编译regex_str并匹配string。匹配总是从字符串的起始位置开始。

ure.search(regex_str, string)

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

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

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

replace可以是字符串或函数。如果它是一个字符串然后逃逸形式的序列\<number>\g<number> 可用于扩大到相应的组(或提供无与伦比的基团的空字符串)。如果replace是一个函数,那么它必须接受一个参数(匹配项)并且应该返回一个替换字符串。

如果指定了count且非零,则在进行了这么多次替换后,将停止替换。该标志参数将被忽略。

注意:此功能的可用性取决于 MicroPython 端口

ure.DEBUG

标志值,显示编译表达式的调试信息。(可用性取决于MicroPython 端口。)

正则表达式对象

编译的正则表达式。此类的实例是使用 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()search() 方法返回的对象,并传递给 中的替换函数sub().

match.group(index)

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

match.groups()

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

注意:此方法的可用性取决于 MicroPython 端口

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

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

注意:这些方法的可用性取决于MicroPython 端口

match.span([index])

返回 2-tuple 。(match.start(index), match.end(index))

注意:此方法的可用性取决于 MicroPython 端口