1 正則表達(dá)式的介紹
正則表達(dá)式使用單個(gè)字符串來(lái)描述,匹配一系列符合某個(gè)句法規(guī)則的字符串
對(duì)字符串的檢索匹配和處理
2 python 正則表達(dá)式
python通過(guò)re模塊提供對(duì)正則表達(dá)式的支持
- 先將正則表達(dá)式的字符串形式編譯為Pattern實(shí)例
- 使用Pattern實(shí)例處理文本并獲得匹配結(jié)果
- 使用實(shí)例獲得信息,進(jìn)行其他操作
dd.PNG
字符:
| 一般字符 | 自身匹配 | abc | abc |
|---|---|---|---|
| . | 匹配任意換行符"\n"以外的字符。 在DOALL模式下也能匹配換行符 |
a.c | abc |
| \ | 轉(zhuǎn)義字符 | a\.c a\\c |
a.c a\c |
| [...] | 字符集??梢允荹abc]或[a-c]或[^abc]表示不是abc的其他字符 | a[bcd]e | abe ace ade |
預(yù)定義字符集(可以寫在[...]中):
| 一般字符 | 自身匹配 | abc | abc |
|---|---|---|---|
| \d | 數(shù)字:[0-9] | a\dc | a1c |
| \D | 非數(shù)字:[^\d] | a\Dc | abc |
| \s | 非空字符:[<空格>\t\r\f\v] | a\sc | a c |
| \S | 非空白字符:[^\S] | a\Sc | abc |
| \w | 單詞字符:[A-Za-z0-9] | a\wc | abc |
| \W | 非單詞字符:[^\w] | a\Wc | a c |
數(shù)量詞(用在字符或(......)之后):
| 一般字符 | 自身匹配 | abc | abc |
|---|---|---|---|
| * | 匹配前一個(gè)字符0次或無(wú)限次 | abc* | ab abccc |
| + | 匹配前一個(gè)字符1次或無(wú)限次 | abc+ | abc abccc |
| ? | 匹配前一個(gè)字符0次或一次 | ab? | ab abc |
| {m} | 匹配前一個(gè)字符m次 | ab{2}c | abbc |
| {m,n} | 匹配前一個(gè)字符m至n次 m和n可以省略 |
ab{1,2}c | abc abbc |
邏輯、分組:
| 一般字符 | 自身匹配 | abc | abc |
|---|---|---|---|
| | | 代表左右表達(dá)式任意匹配一個(gè),它總是先嘗試 匹配左邊的表達(dá)式,一旦成功匹配則跳過(guò)右邊的表達(dá)式 如果 | 沒有包括在括號(hào)中,則它的范圍是整個(gè)正則表達(dá)式 |
abc|def | abc def |
| (...) | 將括起來(lái)的表達(dá)式做為分組,從表達(dá)式左邊開始每遇到, 一個(gè)分組的左邊括號(hào),編號(hào)+1。分組表達(dá)式做為一個(gè)整體, 可以后接數(shù)量詞。表達(dá)式中 | 僅在該組中有效 |
(abc){2} a(123|456)c |
abcabc a456c |
iLmsux(編譯選項(xiàng)指示):
| re.I | 忽略大小寫 |
| re.L | 使用預(yù)定字符類\w \w \b \B \s \S取決當(dāng)前區(qū)域設(shè)定 |
| re.M | 多行模式改變^和$的行為 |
| re.S | .任意匹配模式 |
| re.U | 使用預(yù)定義類\w \W \B \s \S \d \D 取決Unicode定義的字符屬性 |
| re.X | 詳細(xì)模式,可以多行,忽略空白字符,并且可以加入注釋 |
3 貪婪模式和非貪婪模式
正則表達(dá)式通常用于在文本中查找匹配的字符串。Python里的數(shù)量詞默認(rèn)是貪婪的,意思是總是嘗試匹配盡可能多的字符;非貪婪的則相反,總是嘗試匹配盡可能少的字符。
例如:
正則表達(dá)式"abc"如果用于查找"abbbc",將找到"abbb"。而如果使用非貪婪方法"ab?",將找到"a"。