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 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', '', '']
职能¶
- 
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 端口。