# 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_范例