re – 简单的正则表达式

该模块实现了相应 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 re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

职能

re.compile(regex_str[, flags])

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

re.match(regex_str, string)

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

re.search(regex_str, string)

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

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

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

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

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

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

re.DEBUG

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

正则表达式对象

编译的正则表达式。此类的实例是使用re.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 端口