1. 程式人生 > >25、正則表達式

25、正則表達式

換行 all group tro search 十進制數 [] 找對象 正則表達

一 正則表達式

1 功能字符串的模糊匹配查詢

"hello".find("yuan\n egon\nalex")

技術分享

2 元字符

re.findall(‘查找對象‘,‘內容‘)----匹配出所有條件的元素

元字符包括:. ^ $ * + ? { } [ ] | ( ) \

. :除換行符以外的任意“一個”符號

ret=re.findall("李.","李傑,李剛,王超,占山")
print(ret)

^ :只匹配字符串開始的位置

import re
ret=re.findall("^李.","yuan李傑,李剛,王超,占山,李蓮英")
print(ret)

$ :只匹配字符串最後一個(末尾)位置

import re
ret=re.findall("y..n$","yabn李傑,李剛,王超,占山,李蓮英")
print(ret)

重復元字符

* :(0,無窮)

import re
ret=re.findall("131\d*","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234")
print(ret)

+ :(1,無窮)

import re
ret=re.findall("131\d+","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234
") print(ret)

? :(0,1)

import re
ret=re.findall("-?\d+","131,41,-11,12,-4")
print(ret)

{} :指定次數

import re
ret=re.findall("\d{18}","12312321,412341,32424,1234213423,123415234123324111,123412341234,12341234")
print(ret)

二 轉義符

1 反斜杠後邊跟元字符去除特殊功能,比如\

2、反斜杠後邊跟普通字符實現特殊功能,比如\d

\d  匹配任何十進制數;      它相當於類 [0-9]。
\D  匹配任何非數字字符;    它相當於類 [
^0-9]。 \s 匹配任何空白字符; 它相當於類 [ \t\n\r\f\v]。 \S 匹配任何非空白字符; 它相當於類 [^ \t\n\r\f\v]。 \w 匹配任何字母數字字符; 它相當於類 [a-zA-Z0-9_]。 \W 匹配任何非字母數字字符; 它相當於類 [^a-zA-Z0-9_] \b 匹配一個特殊字符邊界,比如空格 ,&,#等

讓我們看一下\b的應用:

ret=re.findall(rI\b,I am LIST)
print(ret)#[‘I‘]

接下來我們試著匹配下“abc\le”中的‘c\l’:

import re

ret=re.findall(c\l,abc\le)
print(ret)#[]

ret=re.findall(c\\l,abc\le)
print(ret)#[]

ret=re.findall(c\\\\l,abc\le)
print(ret)#[]

ret=re.findall(rc\\l,abc\le)
print(ret)#[]


# \b是特殊符號所以,‘abc\be‘前面需要加r
ret=re.findall(rc\\b,rabc\be)
print(ret)#[]

分組()

m = re.findall(r(ad)+, add)
print(m)
 
ret=re.search((?P<id>\d{2})/(?P<name>\w{3}),23/com)
print(ret.group())#23/com
print(ret.group(id))#23

元字符 |

ret=re.search((ab)|\d,rabhdg8sd)
print(ret.group())#ab

字符集【】

#--------------------------------------------字符集[]
ret=re.findall(a[bc]d,acd)
print(ret)#[‘acd‘]
 
ret=re.findall([a-z],acd)
print(ret)#[‘a‘, ‘c‘, ‘d‘]
 
ret=re.findall([.*+],a.cd+)
print(ret)#[‘.‘, ‘+‘]
 
#在字符集裏有功能的符號: - ^ \
 
ret=re.findall([1-9],45dha3)
print(ret)#[‘4‘, ‘5‘, ‘3‘]
 
ret=re.findall([^ab],45bdha3)
print(ret)#[‘4‘, ‘5‘, ‘d‘, ‘h‘, ‘3‘]
 
ret=re.findall([\d],45bdha3)
print(ret)#[‘4‘, ‘5‘, ‘3‘]

25、正則表達式