標籤:學習筆記 Regex
Regex基本文法元字元
| 代碼 |
說明 |
舉例 |
| . |
匹配除分行符號外任意一個字元 |
|
| [abc] |
字元集合,只能表示一個字元位置。匹配所包含的任意一個字元 |
|
| [^abc] |
字元集合,只能表示一個字元位置。匹配除去集合內字元的任意一個字元 |
|
| [a-z] |
字元範圍,一個集合,表示一個字元位置匹配所包含的任意一個字元 |
|
| [^a-z] |
字元範圍,一個集合,表示一個字元位置匹配除去集合內字元的任意一個字元 |
|
| \b |
匹配單詞的邊界 |
|
| \B |
不匹配單詞的邊界 |
|
| \d |
等同[0-9] 匹配一位元字 |
|
| \D |
等同[^0-9] 匹配一位非數字 |
|
| \s |
匹配1位空白字元,包括分行符號、定位字元、空格等同[\f\r\n\t\v] |
|
| \S |
匹配1位非空白字元 |
|
| \w |
等同[a-zA-Z0-9_] 包含中文 |
|
| \W |
匹配\w之外的字元 |
|
轉義
重複
| 代碼 |
說明 |
舉例 |
| * |
前面的Regex重複0次或多次 |
|
| + |
前面的Regex重複至少一次 |
|
| ? |
前面的Regex重複0次或1次 |
|
| {n} |
重複n次 |
|
| {n,} |
重複n次以上 |
|
| {n,m} |
重複n到m次 |
|
分組(捕獲)斷言
| 代碼 |
說明 |
舉例 |
| x |
y |
匹配x或y |
|
| (pattern) |
分組(捕獲)後會自動分配組號從1開始可以改變優先順序 \數字 匹配對應的分組(指的是前一個匹配上的分組的內容) |
|
| (?:pattern) |
只改變優先順序不分組 |
|
(?<name>exp)(?nameexp) |
分組捕獲 給組命名Python句法為(?P<name>exp) |
|
| (?=exp) |
零寬度正預測先行斷言斷言exp一定在匹配的右邊出現 |
|
| (?<=exp) |
零寬度正回顧後發斷言斷言exp一定出現在匹配的左邊出現 |
|
| (?!exp) |
零寬度負預測先行斷言斷言exp一定不會出現在右側 |
|
| (?<!exp) |
零寬度負回顧後發斷言斷言exp一定不會出現在左側 |
|
| (?#comment) |
注釋 |
|
斷言不會佔用分組號
貪婪與非貪婪
| 代碼 |
說明 |
舉例 |
| *? |
匹配任意次,儘可能少重複 |
|
| +? |
匹配至少一次,儘可能少重複 |
|
| ?? |
匹配0或1次,儘可能少重複 |
|
| {n}? |
匹配至少n次,儘可能少重複 |
|
| {n,m}? |
匹配至少n次,至多m次,儘可能少重複 |
|
引擎選項
| 代碼 |
說明 |
舉例 |
| IgnoreCase |
匹配時忽略大小寫 |
re.Ire.IGNORECASE |
| Singleline |
單行模式,可穿透/n |
re.Sre.DOTALL |
| Multiline |
多行模式 |
re.Mre.MULTILINE |
| IgnorePatternWhitespace |
忽略運算式中空白字元,若要使用空白字元 |
re.Xre.VERBOSE |
代碼 說明 舉例
IgnoreCase 匹配時忽略大小寫 re.Ire.IGNORECASE
Singleline 單行模式,可穿透/n re.Sre.DOTALL
Multiline 多行模式 re.Mre.MULTILINE
IgnorePatternWhitespace 忽略運算式中空白字元,若要使用空白字元 re.Xre.VERBOSE
Python中使用|(位或)運算開啟多種選項
PythonRegexre模組編譯
- re.compile(pattern, flags=0)
- 返回Regex對象regex
- Regex編譯的結果儲存,下次使用同樣的pattern時不需要重新編譯
單次匹配
regex.match(string[, pos[, endpos]])
- 從字串開頭匹配,可指定開始與結束位置 返回match對象
regex.search(string[, pos[, endpos]])
- 從頭搜尋直到第一個匹配,可指定開始與結束位置 返回match對象
- regex.fullmatch(string[, pos[, endpos]])
全文檢索搜尋
匹配替換
分割字串
- regex.split(string, maxsplit=0)
分組
使用(pattern)捕獲的資料放到組中
- match類方法
group(N)
- 1-N時對應的分組 0但會整個匹配的字串
- 如果使用了命名分組,可用group(name)方式取出
groups()
- groupdict()
TODO:argparse
Python第六周 學習筆記(2)