正則表達式是一門獨立的,任何語言均可以使用正則表達式,是由一堆特殊的字符組合而來python
字符組:正則表達式
[0-9] :匹配0-9之間的任意字符spa
[9-0] : 報錯, 必須從小到大code
[a-z] : 小寫的a-z之間的字母對象
[A-Z] : 大寫的A-Z之間的字母blog
[z-A] : 錯誤, 只能從小到大ip
[A-z] : 從大寫的A到小寫的z,根據ascii表來匹配對應的值。ci
注意:順序必需要按照ASCII碼錶數值的順序編寫字符串
元字符input
組合使用
\w\W : 匹配字母數字下劃線與非字母數字下劃線,匹配全部
\d\D : 不管是數字或者非數字均可以匹配
^ : startswith '^'在外面使用: 表示開頭。 [^]: 表示取反的意思。
[^ab]: 表明只去ab之外的字符。 [^a-z]: 取a-z之外的字符。
$ : endswith
^$ : 配合使用叫作精準匹配,如何限制一個字符串的長度或者內容
| : 表示或。ab|abc若是第一個條件成立,則abc不會執行,怎麼解決,針對這種狀況把長的寫在前面就行了,必定要將長的放在前面。
.* :貪婪匹配
.*? :非貪婪匹配 ----> 能夠作過濾想要獲取的數據以前的數據
在python中若想使用正則表達式,必須經過re模塊來實現
想獲取某一堆字符串中的某些字符,正則表達式能夠幫咱們過濾,並提取出咱們須要的字符數據
爬蟲:re、Beautifulsoup四、Xpath、selector
數據分析:re、pandas、numpy...
用戶名與密碼、手機號輸入認證:檢測輸入的內容合法性
一、.findall('正則表達式', str) :匹配全部的字符串,拿到返回的結果,返回的結果是一個列表
import re str3 = 'Mr shen 998' t = re.findall('[A-Za-z0-9]{3}',str3) print(t) # ['she', '998']
二、.search('正則表達式', str) :在匹配一個字符串成功後,拿到結果後結束,不日後匹配,返回的結果是一個對象
想要提取獲取對象中的值,對象.group()獲得
import re str3 = 'Mr shen 998' t2 = re.search('[A-Za-z0-9]{3}', str3) print(t2) # <re.Match object; span=(3, 6), match='she'> print(t2.group()) # she
三、.match('正則表達式', str) :從匹配的字符開頭匹配,若開頭不是想要的內容,則返回None,匹配成功後返回的結果是一個對象
想要提取獲取對象中的值,對象.group()獲得
import re # 手機號認證 while True: str1 = input('請輸入手機號:').strip() # ^ 表示開頭 # | 表示或 # $ 表示結束 # (13|14|18)表示獲取一個值13或14或18 # [0-9] 表示限制取值範圍 # {n} 表示獲取n個值 if re.match('^(13|14|15|17|18|19)[0-9]{9}$', str1): print('手機號格式正確') break else: print('輸入格式不正確')
import re str2 = 'shen988' # [A-Za-z0-9] 表示限制取值範圍 # {6} 表示取6個值 obj = re.match('[A-Za-z0-9]{6}', str2) print(obj) # 對象<re.Match object; span=(0, 6), match='shen98'> print(obj.group()) # shen98
import re str3 = 'Mr shen 998' t3 = re.match('[A-Za-z0-9]{2}', str3) # 若是限制取3位則會報錯,從頭找不到三位 print(t3) # <re.Match object; span=(0, 2), match='Mr'> print(t3.group()) # Mr
一、發送請求:requests
二、獲取響應數據:對方機器直接返回
三、解析並提取想要的數據:re
四、保存提取後的數據:with open()存到文件中
一、發送請求:requests
二、解析數據
三、保存數據