【Python】编程笔记10
生活随笔
收集整理的這篇文章主要介紹了
【Python】编程笔记10
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 正則表達式
- 一、基本使用
- 二、進階——更精確
- 三、re模塊
- 1、match()方法
- 2、split()——切分字符串
- 3、()——分組
- 4、貪婪匹配
- 5、編譯
正則表達式
- 用于匹配字符串。
- 思想 :用一種描述性的語言來給字符串定義一個規則,凡事符合規則的字符串,則認為“匹配”,否則,不合法。
一、基本使用
| \s | 匹配一個空格、空白符 |
| \d | 匹配一個數字 |
| \w | 匹配一個字母或數字 |
| . | 匹配任意字符 |
| * | 匹配任意個字符(包括0個) |
| + | 至少一個字符 |
| ? | 表示0個或1個字符 |
| {n} | 表示n個字符 |
| {n, m} | 表示n~m個字符 |
注意:可以使用多者的組合形式。
eg:\d{3}\s+\d{3,8}
二、進階——更精確
[] 表示范圍,eg:
- [0-9a-zA-Z_] 可以匹配一個數字、字母或者下劃線;
- [0-9a-zA-Z_]+可以匹配至少由一個數字、字母或者下劃線組成的字符串;
- [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下劃線開頭,后接任意個由一個數字、字母或者下劃線組成的字符串;==》合法的變量
A|B 匹配 A 或 B
^ 表示行的開頭,^\d 表示必須以數字開頭
$ 表示行的結束,\d$ 表示必須以數字結束
三、re模塊
包含所有正則表達式的功能,需特別注意 \ 轉義 或 使用r前綴(可以不考慮轉義的問題,推薦)
1、match()方法
match()方法 判斷是否匹配,如果匹配成功,返回一個 Match 對象,否則返回 None。
import re print(re.match(r'^\d{3}\-\d{3,8}$', '010-12345')) print(re.match(r'^\d{3}\-\d{3,8}$', '010 12345'))結果輸出
<_sre.SRE_Match object; span=(0, 9), match='010-12345'> None常用判斷方法
test = '用戶輸入的字符串' if re.match(r'正則表達式', test):print('ok') else:print('failed')2、split()——切分字符串
利用正則表達式將不規范的輸入轉化為正確的數組
print(re.split(r'\s+','a b c')) print(re.split(r'[\s\,]+', 'a,b, c d')) print(re.split(r'[\s\,\;]+', 'a,b;; c d'))輸出結果
['a', 'b', 'c'] ['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd']3、()——分組
用于提取子串,用 () 表示要提取的分組。
m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345') print(m) print(m.group(0)) # 第一個匹配的子串,永遠是原始字符串 print(m.group(1)) # 第二個匹配的子串 print(m.group(2)) # 第三個匹配的子串t = '19:05:30' m = re.match(r'(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t) print(m.groups())結果輸出
<_sre.SRE_Match object; span=(0, 9), match='010-12345'> 010-12345 010 12345 ('19', '05', '30')4、貪婪匹配
正則匹配默認是貪婪匹配,即匹配盡可能多的字符。
## 貪婪匹配 print(re.match(r'^(\d+)(0*)$', '102300').groups()) ## 非貪婪匹配——添加? print(re.match(r'^(\d+?)(0*)$', '102300').groups())結果輸出
('102300', '') ('1023', '00')5、編譯
當使用正則表達式時,re模塊內部會做兩個事:
- 編譯正則表達式,若其本身不合法,則報錯;
- 用編譯后的正則表達式來匹配字符串。
預編譯正則表達式(若該正則表達要重復使用幾千次):
編譯后生成Regular Expression 對象,可以調用對應的方法實現字符串匹配。
結果輸出
('010', '123456') ('010', '8086')總結
以上是生活随笔為你收集整理的【Python】编程笔记10的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】编程笔记9
- 下一篇: 【Python】编程笔记11