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.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 端口。