re
– 简单的正则表达式¶
This module implements a subset of the corresponding CPython module,
as described below. For more information, refer to the original
CPython documentation: re
。
该模块实现了正则表达式操作。支持的正则表达式语法是 CPython re
模块的子集(实际上是 POSIX 扩展正则表达式的子集)。
支持的运算符和特殊序列包括:
.
匹配任字符。
[...]
匹配字符集。支持单个字符和范围,包括否定集(例如,
[^a-c]
)。^
匹配字符串的开头。
$
匹配字符串的结尾。
?
匹配前一个子模式的零个或一个。
*
匹配前一个子模式的零个或多个。
+
匹配前一个子模式的一个或多个。
??
?
的非贪婪版本,匹配零个或一个,优先匹配零个。*?
*
的非贪婪版本,匹配零个或多个,优先匹配最短匹配。+?
+
的非贪婪版本,匹配一个或多个,优先匹配最短匹配。|
匹配该运算符的左边或右边子模式。
(...)
分组。每个组都是捕获的(可以通过
match.group()
方法访问其捕获的子字符串)。\d
匹配数字。相当于
[0-9]
。\D
匹配非数字。相当于
[^0-9]
。\s
匹配空白字符。相当于
[ \t-\r]
。\S
匹配非空白字符。相当于
[^ \t-\r]
。\w
匹配 “word characters”(仅 ASCII)。相当于
[A-Za-z0-9_]
。\W
匹配非 “word characters”(仅 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.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 并且非零,则替换将在进行此数量的替换后停止。忽略 flags 参数。
注意:此函数的可用性取决于 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, /)¶
使用正则表达式拆分 string。如果给定 max_split,它指定要执行的最大拆分数。返回字符串列表(如果指定了,则可能有多达 max_split+1 个元素)。
匹配对象¶
由 match()
和 search()
方法返回,并传递给 sub()
中的替换函数的匹配对象。
- match.group(index)¶
返回匹配的(子)字符串。对于整个匹配,index 为 0,对于每个捕获组,index 为 1 及以上。仅支持数字组。
- match.groups()¶
返回一个包含匹配 的所有组的子字符串的元组。
注意:此方法的可用性取决于 MicroPython 移植版本。
- match.start([index])¶
- match.end([index])¶
返回原始字符串中匹配的子字符串组的开始或结束索引。index 默认为整个组,否则将选择一个组。
注意:这些方法的可用性取决于 MicroPython 移植版本。
- match.span([index])¶
返回 2 元组
(match.start(index), match.end(index))
。注意:此方法的可用性取决于 MicroPython 移植版本。