1. 程式人生 > >python之正則表示式:re模組

python之正則表示式:re模組

一.正則表示式中常用的字元含義

1、普通字元和11個元字元:

常用字元劃分 匹配範圍 示例資料
匹配的正則表示式 目標匹配的字串
普通字元 匹配自身 abc abc
. 匹配任意除換行符"\n"外的字元(在DOTALL模式中也能匹配換行符 a.c abc
\ 轉義字元,使後一個字元改變原來的意思 a\.c;a\\c a.c;a\c
*
匹配前一個字元0或多次 abc* ab;abccc
.+ 匹配前一個字元1次或無限次 abc+ abc;abccc
? 匹配一個字元0次或1次 abc? ab;abc
^ 匹配字串開頭。在多行模式中匹配每一行的開頭 ^abc abc
$ 匹配字串末尾,在多行模式中匹配每一行的末尾 abc$ abc
| 或。匹配|左右表示式任意一個,從左到右匹配,如果|沒有包括在()中,則它的範圍是整個正則表示式
abc|def abcdef
{} {m}匹配前一個字元m次,{m,n}匹配前一個字元m至n次,若省略n,則匹配m至無限次 ab{1,2}c abcabbc
[]  字符集。對應的位置可以是字符集中任意字元。字符集中的字元可以逐個列出,也可以給出範圍,如[abc]或[a-c]。[^abc]表示取反,即非abc。
所有特殊字元在字符集中都失去其原有的特殊含義。用\反斜槓轉義恢復特殊字元的特殊含義。
a[bcd]e abe
ace
ade
()
被括起來的表示式將作為分組,從表示式左邊開始沒遇到一個分組的左括號“(”,編號+1.
分組表示式作為一個整體,可以後接數量詞。表示式中的|僅在該組中有效。
(abc){2}a(123|456)c abcabca456c

強調一下反斜槓\的作用:

1.反斜槓後邊跟元字元去除特殊功能;(即將特殊字元轉義成普通字元)

2.反斜槓後邊跟普通字元實現特殊功能;(即預定義字元)

3.引用序號對應的字組所匹配的字串。

二、預定義字符集(可以寫在字符集[...]中) 

預定義字符集劃分 匹配範圍 示例資料
匹配的正則表示式 目標匹配的字串
\d 數字:[0-9] a\bc a1c
\D 非數字:[^\d] a\Dc abc
\s 匹配任何空白字元:[<空格>\t\r\n\f\v] a\sc a c
\S 非空白字元:[^\s] a\Sc abc
\w 匹配包括下劃線在內的任何字字元:[A-Za-z0-9_] a\wc abc
\W 匹配非字母字元,即匹配特殊字元 a\Wc a c
\A 僅匹配字串開頭,同^ \Aabc abc
\Z 僅匹配字串結尾,同$ abc\Z abc
\b 匹配\w和\W之間,即匹配單詞邊界匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 \babc\b 空格abc空格
a\b!bc a!bc
\B [^\b] a\Bbc abc

三、特殊分組用法:

特殊分組劃分 匹配範圍 示例資料
匹配的正則表示式 目標匹配的字串
(?P<name>) 分組,除了原有的編號外再指定一個額外的別名 (?P<id>abc){2} abcabc
(?P=name) 引用別名為<name>的分組匹配到字串 (?P<id>\d)abc(?P=id) 1abc15abc5
\<number> 引用編號為<number>的分組匹配到字串 (\d)abc\1 1abc15abc5