什麼是正則表達式?
百度百科說:"正則表達式是對字符串操做的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯
正則表達式的應用場景有哪些?
特定規律字符串的查找,切割、替換等
特定格式(郵箱、手機號、IP、URL等)的校驗
爬蟲項目中,提取特定內容
在python中使用正則表達式對語句解析,須要藉助re模塊,re下的相關函數有以下
函數
功能
match
只從開頭進行匹配,匹配到就返回結果對象,沒有找到返回None
search
從任意位置匹配,功能同上,都是單次匹配,找到一個就中止匹配
findall
所有匹配,返回全部匹配的到結果列表,沒有找到返回空列表
compile
建立正則表達式對象,能夠讓建立正則對象和內容匹配分開操做
正則表達式中的經常使用語法
普通字符匹配
一對一徹底匹配
[ ]:
中間的任意一個字符
.
除’\n’之外的任意字符
\d
數字字符,等價於[0-9]
\D
非數字字符,等價於[^0-9]
\w
匹配字(數字、字母、下劃線)
\s
空白字符(\n、\r、\t、空格)
\S
非空白字符(\s相反的內容)
\b
詞邊界(開頭、結尾、空格、標點)
\B
非詞邊界(\b相反的內容)
次數限定
修飾前面的單個字符出現的次數
*
任意次
+
至少一次
?
至多一次
{m}
指定m次
{m,n}
m <= 次數 <=n
{m,}
至少m次
{,m}
至多m次
邊界限定
^
以指定的內容開頭
$
以指定的內容結尾
貪婪匹配
貪婪
最大限度的匹配。正則的匹配默認是貪婪的
非貪婪
只要知足條件,能少匹配就少匹配。能夠使用’?'取消貪婪
正則切割
import re
c = re. compile ( r'\d' )
string = '世界上最遙遠的距離1不是天涯海角2而是3我站在你面前4你殊不知道我愛你'
ret = c. split( string)
print ( ret)
print ( re. split( r'\d' , string) )
正則替換
string = 'ffbloverbfyrloveefbyrefierhfhielovedhewu'
new_string = string. replace( 'love' , 'like' , 2 )
print ( new_string)
import re
s = 'I1love2you'
def double ( s) :
return str ( int ( s. group( ) ) * 2 )
s2 = re. sub( r'\d' , double, s)
print ( s2)