正則表達式之模糊匹配\d、\D、\s、\S、[A-Z]、[a-z]、[a-zA-Z]、+、*、{n,m}、?、.、re.M、^和$等


模糊匹配:

\d:匹配一個數字(digit)

\D:匹配一個非數字

re.search(r"\d","abc123abc"),其中,r表示原字符,里面的\不需要做轉義。

 

\w:匹配字母或數字

\W:匹配非字母且也是非數字的情況

 

\s:匹配一個空白字符,比如:空格、\n \r \t

\S:匹配一個非空白字符

 

[A-Z]:匹配大寫字母

[a-z]:匹配小寫字母

[a-zA-Z]:匹配大小寫字母

 

嘗試匹配多個:

+:匹配至少一個(可以匹配多個);

*:匹配0個或者多個;

{n,m}:匹配n個或者m個之間的個數都行;

?:表示匹配一個或0個;

帶有量詞的情況下,正則都會進行最多元素的匹配(正則表達式的貪婪性)。

抑制正則表達式的貪婪性,量詞后面加?

.:表示出了回車之外的任意字符;

加個re.S可以實現.匹配回車,也就是匹配包括回車的所有字符;

開頭和結尾的匹配:^ $

\b:單詞邊界,字符串的最前面和最后面,或者前面有空白字符;

re.M:把一個帶有回車的字符串,當成多行字符串處理

re.search(r"\d+$","123\n456\n789",re.M)

|:或的關系,匹配其中一個就可以

 

 

*:匹配0個或者多個;

re.search(r"\d*","we2356bc").group(),當我們匹配w字符的時候,w字符的前面沒有數字,沒有數字就是0個數字,沒有數字也滿足\d*,因為*表示匹配0次或者多次。此處的\d*匹配到了w前面的空字符串。

 

 

?:表示匹配一個或0個;

 

 

 

{n,m}:匹配n個或者m個之間的個數都行;

 

 

.:表示出了回車之外的任意字符;

 

匹配大小寫混合:[a-zA-Z],或者re.I都可以。re.I表示的就是忽略大小寫的。

 

開頭和結尾的匹配:

 

\b:單詞邊界,字符串的最前面和最后面,或者前面有空白字符;

 

 

 

re.M:把一個帶有回車的字符串,當成多行字符串處理(比如,下面例子中第一行就滿足了我匹配到結尾的數字了,所以就返回123了)

re.M:findall用的多一些,比如多行字符串的情況下我想匹配每一行結尾的數字;

re.search(r"\d+$","123\n456\n789",re.M)

 

 

re.findall(r"\d+$","abc123\ncde456\ndef789",re.M)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM