day15正規表示式

2021-10-19 20:06:49 字數 3379 閱讀 2467

什麼時異常捕獲:程式報錯出現了異常

程式異常的後果:程式會直接結束,不會往後面執行

異常捕獲

目的:當程式出先異常的時候,程式不崩潰繼續執行後面的**

什麼時候需要捕獲:知道某個地方出現異常,但是**沒有問題(使用者的不當操作)這個時候需要異常捕獲

語法1: — 捕獲所有異常型別

try:

​ **段1

except:

​ **段2

說明:try、except – 關鍵字:固定寫法

**段一:需要捕獲異常的**

**段二:捕獲到異常後執行的**

執行過程:會先執行try後面的**。沒有異常直接執行後面的其他**(不執行**段二);如果**段1出席那異常,程式不崩潰,直接執行except後面的**段2

語法2:— 捕獲指定型別異常

try:

​ **段1

except:異常型別

​ **段2

語法3: — 同時捕獲多種異常,進行相同的處理

try:

​ **段1

except:(異常型別1,異常型別2…)

​ **段2

語法4:

try:

​ **段1

except:異常型別1

​ **段11

except:異常型別2

​ **段22

關鍵字finally

finally的存在並不影響原來異常捕獲

finally後面得分**不管try裡面的**發生什麼情況都會執行,就算**段1出現異常沒有**獲到finally後面的**也會被執行)

正則匹配類符號

1.什麼是正規表示式

正規表示式是讓複雜的字串處理變得更加簡單的工具

#2.正則語法

fullmatch(正規表示式, 字串) – 判斷指定的字串是否滿足正規表示式的規則,如果不符合返回none

python中正規表示式式寫到單引號或者雙引號中』正規表示式』,js中放在兩個/中 /正則/

普通字元

普通字元指的是除了特殊符號以外的符號

普通字元在正則中表示這個字元本身

特殊字元 . – 匹配任意字元

3)\d – 匹配乙個任意的數字

4)\s – 匹配乙個任意空白字元

空白字元:空格、\n、\t

5)\d – 匹配任意乙個非數字字元

6)\s – 匹配任意乙個非空白字元

7)[字符集] – 匹配字符集中任意乙個字元

[\u4e00-\u9f5a] – 匹配任意乙個中文

注意:1.乙個中括號只能匹配到乙個字元

2.減號如果在兩個字元之間表示範圍,在-號前面的編碼值必須小於後面的編碼值

3.如果減號不在兩個字元之間表示本身

[adc-] 匹配其中乙個 -表示本身

8)[^字符集] – 匹配不在字符集中的任意乙個字元

​ [^abc] - 匹配除了『a』』b『'c』以外的任意字元

匹配次數

* 匹配0次或者多次

re_str = r'1[fgh]*2'

result = fullmatch(re_str,

'12'

)print

(result)

re_str = r'1[fgh]*2'

result = fullmatch(re_str,

'1fggh2'

)print

(result)

​ 2.+ 匹配一次或者多次

```python
re_str = r』1[fgh]+2』

result = fullmatch(re_str, 『1f2』)

print(result)

```? 匹配0次或者1次

re_str = r'1[fgh]+2'

result = fullmatch(re_str,

'1f2'

)print

(result)

'''

-- 匹配n次

-- 匹配m到n次

-- 匹配至少m次

-- 最多n次

就是乙個資料(也可以)在範圍內的出現次數

'''re_str = r'a[a-z]b'

result = fullmatch(re_str,

'adfhdfb'

)print

(result)

貪婪和非貪婪

在匹配次數不確定的時候匹配模式分貪婪和非貪婪

(1)貪婪:在能匹配成功的前提下盡可能多的去匹配

預設情況下,所有不確定次數的匹配都是貪婪

(2)非貪婪:在能匹配成功的情況下盡可能少的去匹配

在匹配次數不定的次數後加?,就變成非貪婪模式

re_str = r』a.*b』

result = search(re_str, 『電腦0a5555b5b手機家電bf』)

print(result)

分支和分組

分組 - 用()將正則的一部分括起來看成乙個整體進行操作
re_str = r』(\d[a-z])』

print(fullmatch(re_str, 『22sss22sss22sss』))

用法二在包含分組的正則中可以同通過\n來重複前面第n個分組匹配到的內容

用法三:捕獲(只針對findall)

re_str = r』name:』

print(findall(re_str, 『tel:23768, name:xiaoming, age:18歲,id:27237486; tel:72891, name:張三, age:67歲, id:23479782』))

分支 – |

re_str = 『abc\d|abc[a-z]』

print(fullmatch(re_str, 『abcfkj』))

re_str = 『abc(\d|[a-z])』

print(fullmatch(re_str, 『abcaaa』))

with open(『data.txt』, 『r』, encoding=『utf-8』) as f:

s = f.read()

re_str = 『「provincename」?".+?")』

result = findall(re_str, s)

print(result)

轉義符號

import array
正則的轉義符號:在具有特殊功能或者特殊意義的符號前加,讓符號原來的意義消失,表示符號本身

在具有特殊功能或者特殊意義的符號放在裡面,

對用的功能會自動消失,例如+、?+、*、$、| 等、^(不放在最前面)

day15正規表示式作業

1.使用者名稱匹配 要求 1.使用者名稱只能包含數字 字母 下劃線 2.不能以數字開頭 3.度在 6 到 16 位範圍內 from re import fullmatch user name input 請輸入使用者名稱 user name1 r a za z 0 9a za z result fu...

day15正規表示式作業

1.使用者名稱匹配 要求 1.使用者名稱只能包含數字 字母 下劃線 2.不能以數字開頭 3.度在 6 到 16 位範圍內 from re import fullmatch re str r a za z 1 9a za z print fullmatch re str,a234455 密碼匹配 要求...

day15正規表示式作業

1.使用者名稱匹配 要求 1.使用者名稱只能包含數字 字母 下劃線 2.不能以數字開頭 3.度在 6 到 16 位範圍內 user name input 請輸入使用者名稱 re str r a za z a za z d result fullmatch re str,user name print...