python正則表達式


  在做接口的時候,上個接口返回的數據做為下一個接口的參數,這個時候我們可以用到正則表達式進行提取

 

正則表達式

正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

 

正則表達式常用字符

 

re模塊

在python語言中正則表達式是通過re模塊進行實現的

 

re模塊常用方法

re.match(pattern, string, flags=0)

# match用法
re.match(pattern, string, flags=0)

a = 'foo'
b= 'foo '
m = re.match(a,b)   # 模式匹配字符串,匹配就返回信息,不匹配就返回None,如果從開始匹配,匹配到就返回。
print(m)
if m is not None:   # 如果匹配,就返回匹配內容
    print(m.group())

執行結果:

<re.Match object; span=(0, 3), match='foo'>
foo

group()表示返回匹配對象

groups()表示返回包含唯一或者全部的元祖形式

search(pattern, string, flags=0)

# search用法
# search(pattern, string, flags=0)
a = 'foo'
b= 'seafood '
m = re.search(a,b)   # 搜索匹配字符串,匹配就返回信息,不匹配就返回None
print(m)
if m is not None:   # 如果匹配,就返回匹配內容
    print(m.group())

執行結果:
<re.Match object; span=(3, 6), match='foo'>
foo

match()和search區別

re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。

 

findall(pattern, string, flags=0)

# findall用法
# re.findall(pattern, string, flags=0)
a = 'sea foo'
b= 'sea food '
m = re.findall(a,b)     # 進行匹配,發現匹配的返回一個列表,如果沒有找到匹配的,則返回空列表
print(m)


代碼結果:
['sea foo']

finditer(pattern, string, flags=0)

# finditer用法
# finditer(pattern, string, flags=0)
b= 's3eaf1oo2d '
m = re.finditer(r'\d',b)    # 返回內容存在一個迭代器中
for i in m:
    print(i.group())

代碼結果:
3
1
2

sub(pattern, repl, string, count=0, flags=0)

subn(pattern, repl, string, count=0, flags=0)

# sub 和subn的用法
# sub(pattern, repl, string, count=0, flags=0)
# subn(pattern, repl, string, count=0, flags=0)
a = 'Anjing is  a test'
b = 'exploit'
m = re.sub('test',b,a)  # 搜索和替換,返回替換內容
m1 = re.subn('test',b,a)    # 搜索和替換,返回替換內容+替換總數字
print(m)
print(m1)

代碼結果:
Anjing is  a exploit
('Anjing is  a exploit', 1)

兩者區別,subn返回比sub多一個替換總數字

split(pattern, string, maxsplit=0, flags=0)

# split用法
# split(pattern, string, maxsplit=0, flags=0)
a = 'test1:test2:test3'
m = re.split(':',a) # 已:進行分割,並返回分割數據已列表展示
print(m)

代碼結果:
['test1', 'test2', 'test3']

 


免責聲明!

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



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