python RE庫的基本使用!基本定義詳細講解!來源於MOOCpython,課程連結文章末尾有!

dream_網路安全發表於2018-11-23

前言:
程式碼的格式為中文,因為是在WORD裡黏貼過來的。預設的是中文,所以程式碼僅供參考,直接複製黏貼使用不OK的!要改為英文格式下的: ’
Re庫介紹:
Re庫是Python的標準庫,主要用於字串匹配。
呼叫:

import re

表達型別:
raw string型別(原聲字串型別)

:r[text]
r’[1-9]\d{5}’
r’\d{3}-\d{8}\d{4}-\d{7}’

不包含轉義符:\ 的。
原聲字串中的轉義符不會被轉換!
string:\來表示\ 會更加複雜!
在這裡插入圖片描述

re.search(pattern,string,flags=0)
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

re.s就可以匹配換行符號啦。

實踐:
search:

import re
match = re.search(r’[1-9]\d{5}’,‘BIT 100081’)
if match:
… print(match.group(0))

100081

在這裡插入圖片描述

match:

import re
match = re.match(r’[1-9]\d{5}’,‘BIT 08687’)
if match:
… match.group(0)

match.group(0)
File “”, line 1
match.group(0)
^
IndentationError: unexpected indent

在這裡插入圖片描述

(上例中,我的輸入也有錯誤。正規表示式對應的應該是6位數。然而我的是5位數。而且第一位還不是1.)

match:從字串起始位置開始匹配,因為一開始不是數字,所以匹配不到。
空變數,使用group是錯誤的!
在這裡插入圖片描述

import re
match = re.match(r’[1-9]\d{5}’,‘686870 B’)
if match:
… match.group(0)

‘686870’

在這裡插入圖片描述

findall:
用ls來建立一個列表。用來儲存資料!

import re
ls = re.findall(r’[1-9]\d{5}’ ,‘B123455 h434321’)
ls
[‘123455’, ‘434321’]

在這裡插入圖片描述

re.split:
在這裡插入圖片描述

import re
re.split(r’[1-9]\d{5}’ ,‘B123455 h434321’)
[‘B’, ’ h’, ‘’]

在這裡插入圖片描述

import re
re.split(r’[1-9]\d{5}’ ,‘B123455 h434321’)
[‘B’, ’ h’, ‘’]

re.split(r’[1-9]\d{5}’ ,‘b123455 h434321’)
[‘b’, ’ h’, ‘’]

re.split(r’[1-9]\d{5}’ ,‘12hh3455 78 h434321’)
[‘12hh3455 78 h’, ‘’]

re.split(r’[1-9]\d{5}’ ,‘12hh3455 78 h434321’,maxsplit=1)
[‘12hh3455 78 h’, ‘’]

re.split(r’[1-9]\d{5}’ ,‘12hh3455 78 h434321’,maxsplit=2)
[‘12hh3455 78 h’, ‘’]

re.split(r’[1-9]\d{5}’ ,‘12hh3455 78 h434321’,maxsplit=3)
[‘12hh3455 78 h’, ‘’]

在這裡插入圖片描述

分割匹配原則,這個例子就是分割出來不是符合6個數字的元素。
在這裡插入圖片描述
其中:
12hh3455不符合連續的6個數字,所以被分割出來啦!
78 不符合6位數的要求。也被分割出來啦!
h字元後面是6個連續的數字。所以僅僅被分割出來一個字元’h’.
re.finditer:
在這裡插入圖片描述

for m in re.finditer(r’[1-9]\d{5}’, ‘b435423 kj786543’):
… if m:
… print(m.group(0))

435423
786543

在這裡插入圖片描述

for m in re.finditer(r’[1-9]\d{5}’, ‘b435423 kj786543 b435423 kj786543 b435423 kj786543 b435423 kj786543 b435423 kj786543 b435423 kj786543 b435423 kj786543’):
… if m:
… print(m.group(0))

435423
786543
435423
786543
435423
786543
435423
786543
435423
786543
435423
786543
435423
786543

在這裡插入圖片描述

re.sub:
在這裡插入圖片描述

re.sub(r’[1-9]\d{5}’, ‘:zipfbdsjv’, ‘trter123456 urvn 673328’)
‘trter:zipfbdsjv urvn :zipfbdsjv’

在這裡插入圖片描述

進行一個替換作用!

重點應該是:match

另外的用法:
在這裡插入圖片描述
一次編譯但是可以多次使用!
在這裡插入圖片描述在這裡插入圖片描述

在這裡插入圖片描述

使用這些的時候,需要去掉相關引數!

課程地址:
https://www.icourse163.org/learn/BIT-1001870001?tid=1003245012#/learn/content?type=detail&id=1004574448&cid=1005754051

相關文章