1. 程式人生 > >正則表示式的常用字元整合文件

正則表示式的常用字元整合文件

1、普通字元
匹配規則:匹配相應的普通字元
e.g.
In [9]: re.findall("abc","abcksjdabclkjks")
Out[9]: ['abc', 'abc']


2、或:
元字元:ab | cd 
匹配規則:匹配|兩邊任意一個正則表示式符合的情況
e.g.
In [11]: re.findall("ab|bc","abcdbdcabdcdbcdeabd")
Out[11]: ['ab', 'ab', 'bc', 'ab']
* | 兩側不要有沒用的空格


3、匹配單一字元
元字元: .
匹配規則:匹配除了換行之外的任意字元
e.g.
In [13]: re.findall("f.o","foo is not fao is foo")
Out[13]: ['foo', 'fao', 'foo']


4、匹配開始位置
元字元: ^
匹配規則:匹配一個字串的開始位置
e.g.
In [24]: re.findall("^hello","hello world hello")
Out[24]: ['hello']


5、匹配結束位置
元字元: $
匹配規則:匹配目標字串的結束位置
e.g.
In [25]: re.findall("py$","hello.py")
Out[25]: ['py']


6、匹配重複:
元字元:  *
匹配規則:匹配前面的正則表示式重複0次或多次
e.g.
In [26]: re.findall("fo*","fooofofofsadfo")
Out[26]: ['fooo', 'fo', 'fo', 'f', 'fo']


7、匹配重複
元字元: +
匹配規則:匹配前面的正則表示式重複1次或多次
e.g.
In [32]: re.findall(".+py$","hello.py")
Out[32]: ['hello.py']


8、匹配重複
元字元:?
匹配規則:匹配前面的正則表示式重複0次或1次
e.g.
In [36]: re.findall("ab?","helloabdacdefabc")
Out[36]: ['ab', 'a', 'ab']


9、匹配重複
元字元: {n}
匹配規則:匹配指定的重複次數
e.g.
In [15]:  In [9]: re.findall("ab{3}","abbbbbbbb")
Out[15]: ['abbb']


10、匹配重複
元字元:{m,n}
匹配規則:匹配前面的正則表示式重複m次到n次
e.g.
In [20]:  In [9]: re.findall("ab{2,5}","abbbbbbbbbbbbb")
Out[20]: ['abbbbb']


11、匹配字元集合
元字元:[]
匹配規則:匹配中括號範圍內的任意一個字元
[A-Z]
[a-z]
[0-9]
[_0-9a-zA-Z]
e.g.
In [26]:  In [9]: re.findall("[name]","what is your name")
Out[26]: ['a', 'n', 'a', 'm', 'e']


12、匹配字元集合
元字元:[^...]
匹配規則:匹配除指定字符集之外的任意字元
e.g.
In [33]:  In [9]: re.findall("[^_0-9a-z]","what is your name,My name is Arry")
Out[33]: [' ', ' ', ' ', ',', 'M', ' ', ' ', ' ', 'A']


13、匹配任意(非)數字字元
元字元:  \d  (是)   \D (非)
匹配規則:\d匹配任意數字字元  \d匹配任意非數字字元
e.g.
In [37]:  In [9]: re.findall("\d","phone:14752957")
Out[37]: ['1', '4', '7', '5', '2', '9', '5', '7']
e.g.
In [36]:  In [9]: re.findall("\D","phone:14752957")
Out[36]: ['p', 'h', 'o', 'n', 'e', ':']
e.g.
In [45]:  In [9]: re.findall("14\d{5}","phone:14752957")
Out[45]: ['1475295']


14、匹配(非)普通字元(普通字元:數字字母下劃線)
元字元: \w  \W
匹配規則:\w 匹配任意一個普通字元  \W 匹配任意非普通字元
           [_0-9a-zA-Z]            [^_0-9a-zA-Z]
e.g.
In [50]:  In [9]: re.findall("\w","hello shuge,zye_")
Out[50]: ['h', 'e', 'l', 'l', 'o', 's', 'h', 'u', 'g', 'e', 'z', 'y', 'e', '_']
e.g.
In [49]:  In [9]: re.findall("\W","hello shuge,zye_")
Out[49]: [' ', ',']


15、匹配(非)空字元
元字元:\s   \S
匹配規則:\s 匹配任意一個空字元  \S匹配任意非空字元
          [\n\t\r\0]
e.g.
In [58]:  In [9]: re.findall("\s","heLLO world\r\n\t")
Out[58]: [' ', '\r', '\n', '\t']
e.g.
In [54]:  In [9]: re.findall("\S","heLLO world")

Out[54]: ['h', 'e', 'L', 'L', 'O', 'w', 'o', 'r', 'l', 'd']

16、匹配起止位置
元字元:\A   \Z
匹配規則:\A 匹配開始位置  \Z匹配結束位置
           ^               $
絕對匹配 \Aabc\Z --->abc(且字串只是abc)


17、匹配(非)單詞邊界位置
元字元:\b  \B
匹配規則:\b匹配單詞的邊界  \B匹配非單詞的邊界
單詞邊界:數字字母下劃線和其他字元的交接位置為單詞的邊界
abc$   abc_1 asa  兩個單詞邊界
e.g.
In [78]: re.findall(r"\bis\b","This is a test")

Out[78]: ['is']