# ure – 简单的正则表达式
该模块实现了相应CPython模块的子集,如下所述。 有关更多信息,请参阅原始CPython文档:[re](https://docs.python.org/3.5/library/re.html#module-re).
该模块实现了正则表达式操作。 支持的正则表达式语法是CPython`re`模块的子集(实际上是POSIX扩展正则表达式的子集)。
## 1\. 支持的运算符和特殊序列
* `.`: 匹配任何字符。
* `[...]`: 匹配字符集。 支持单个字符和范围,包括否定集(例如`[^ a-c]`)。
* `^`: 匹配字符串的开头。
* `$`: 匹配字符串的结尾。
* `?`: 匹配零个或前一个子模式之一。
* `*`: 匹配前一个子模式的零个或多个。
* `+`: 匹配前一个子模式中的一个或多个。
* `??`: 非贪婪版的`?`,匹配零或一,偏好为零。
* `*?`:`*`的非贪婪版本,匹配零或更多,优先选择最短匹配。
* `+?`: 非贪婪的“+”版本,匹配一个或多个,优先匹配最短。
* `|`: 匹配此运算符的左侧或右侧子模式。
* `(...)`: 分组。 每个组都在捕获(它捕获的子字符串可以使用`match.group()方法访问)。
* `\d`: 匹配数字。 相当于`[0-9]`。
* `\D`: 匹配非数字。 相当于`[^ 0-9]`。
* `\s`:
* `\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"`。
## 2\. 不支持的表达式
* 重复计算 (`{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', '', '']
~~~
## 3\. 方法
### 3.1. 编译正则表达式, 返回[regex](http://docs.micropython.org/en/latest/library/ure.html?highlight=ure#regex)对象。
```
ure.compile(regex_str[, flags])
```
### 3.2. 编译regex_str并匹配字符串。 匹配始终从字符串中的起始位置开始。
```
ure.match(regex_str, string)
```
### 3.3. 编译regex_str并在字符串中搜索它。
```
ure.search(regex_str, string)
```
与`match`不同,这将搜索字符串以匹配正则表达式的第一个位置(如果正则表达式被锚定,它仍然可以是0)。
### 3.4. 编译regex_str并在字符串中搜索它,用replace替换所有匹配项,并返回新字符串。
```
ure.sub(regex_str, replace, string, count=0, flags=0)
```
replace可以是字符串或函数。 如果它是一个字符串,那么`\<number>`和`\g<number>`形式的转义序列可用于扩展到相应的组(或不匹配组的空字符串)。 如果replace是一个函数,那么它必须采用一个参数(匹配)并且应该返回一个替换字符串。
如果指定了count并且非零,那么在进行许多替换之后,替换将停止。 flags参数被忽略。
注意:此函数的可用性取决于`MicroPython port`。
### 3.5. 标记值,显示有关已编译表达式的调试信息。
```
ure.DEBUG
```
(可用性取决于`MicroPython 移植实现`。)
## 4\. Regex 对象
编译了的正则表达式。 使用`ure.compile()`创建此类的实例。
### 4.1. 类似于模块级函数`match()`,`search()`和`sub()`。
```
regex.match(string) regex.search(string) regex.sub(replace, string, count=0, flags=0)
```
如果将相同的正则表达式应用于多个字符串,则使用方法会更高效。
### 4.2. 使用正则表达式拆分字符串。
```
regex.split(string, max_split=-1)
```
如果给出 max\_split,则指定要执行的最大拆分数。 返回字符串列表(如果指定了,则最多可以有 max\_split + 1 个元素)。
## 5\. Match 对象
匹配`match()`和`search()`方法返回的对象,并传递给sub()中的替换函数。
### 5.1. 返回匹配(子)字符串。
```
match.group(index)
```
整个匹配的索引为0,每个捕获组的索引为1和更高。 仅支持数字组。
### 5.2. 返回包含匹配组的所有子串的元组。
```
match.groups()
```
注意:此方法的可用性取决于`MicroPython 移植实现`。
### 5.3. 返回匹配的子字符串组的开头或结尾的原始字符串中的索引。
```
match.start([index]) match.end([index])
```
index默认为整个组,否则将选择一个组。
注意:这些方法的可用性取决于`MicroPython 移植实现`。
### 5.4. 返回2元组`(match.start(index),match.end(index))`。
```
match.span([index])
```
注意:此方法的可用性取决于`MicroPython 移植`是否实现。
- 简介
- 关于MixPY
- 准备
- MixPY_函数库
- MicroPython标准库
- gc _控制垃圾回收器
- math_数学函数
- sys_系统相关函数
- ubinascii _ 二进制/ ASCII转换
- ucollections_集合和容器类型
- uerrno _系统错误代码
- uheapq_ 堆队列算法
- ujson_JSON编码与解码
- uos _基本的“操作系统”服务
- ure_正则表达式
- MixPY_特定函数
- lcd_显示驱动
- lcd_范例
- sensor_感光元件
- sensor_范例
- image_机器视觉
- image_函数
- HaarCascade 类_特征描述符
- Similarity 类_相似度对象
- Histogram 类_直方图对象
- Percentile 类_百分比值对象
- Threhsold 类_阈值对象
- Statistics 类_统计数据对象
- Blob 类_色块对象
- Line 类_直线对象
- Circle 类_圆形对象
- Rect 类_矩形对象
- QRCode 类_ 二维码对象
- AprilTag 类_AprilTag对象
- DataMatrix 类_数据矩阵对象
- BarCode 类_条形码对象
- Displacement 类_位移对象
- Kptmatch 类_特征点对象
- ImageWriter 类_ImageWriter对象
- ImageReader 类_ImageReader对象
- Image 类_图像对象
- touchscreen_触摸屏幕
- touchscreen_范例
- video_视频
- video_范例
- audio_音频
- audio_范例
- nes_游戏模拟器
- nes_范例
- machine_板级功能
- I2C_总线协议
- I2C_范例
- PWM_脉宽调制
- PWM_范例
- SPI_同步串行协议
- SPI_范例
- Timer_硬件定时器
- Timer_范例
- UART_异步串口
- UART_范例
- network_网卡驱动
- network_范例
- Maix_功能库
- FPIOA_可编程 IO 阵列
- FPIOA_范例
- GPIO_通用输入/输出
- GPIO_范例
- I2S_驱动I2S设备
- I2S_范例
- freq_频率模块
- freq_范例
- FFT_傅里叶运算
- FFT_范例
- KPU_神经网络处理器
- KPU_范例