python基礎(三)-正則表達式

什麼是正則表達式?

  • 百度百科說:"正則表達式是對字符串操做的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯

正則表達式的應用場景有哪些?

  • 特定規律字符串的查找,切割、替換等
  • 特定格式(郵箱、手機號、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你殊不知道我愛你'

# 字符串是固定切割,不能解決某類的匹配切割問題
# print(string.split('1'))
# 按照正則進行切割
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'
# 正則替換
# s2 = re.sub(r'\d', ' ', s)
# 替換時能夠傳遞一個函數,使用函數的返回值進行替換
def double(s):
    return str(int(s.group()) * 2)
    # return 'xxx'
# 使用專門的處理函數,能夠認爲的干預替換過程
s2 = re.sub(r'\d', double, s)
print(s2)

在這裏插入圖片描述