<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
要想成功的進行字串的匹配需要使用到正規表示式模組,正規表示式匹配規則以及需要被匹配的字串。在這三個條件中,模組與字串都是準備好的,只有匹配規則異常的靈活,而今天這個章節就是認識一下正規表示式中的特殊字元,通過這些字元就可以針對我們想要的資料進行匹配。
特殊字元 | 描述 |
---|---|
d | 匹配任何十進位制的數位,與[0-9]一致 |
D | 匹配任意非數位 |
w | 匹配任何字母數位下劃線及unicode字元集 |
W | 匹配非字母數位的資料以及下劃線 |
s | 匹配任何空格字元,與 [n t r v f] 相同 |
S | 匹配任意非空字元 |
A | 匹配字串的起始 |
Z | 匹配字串的結束 |
. | 匹配任何字元(除了 n 之外);也叫做萬用字元 |
接下來看一個小案例,幫助我們瞭解這些 特殊字元的使用方法 。
import re test_data = "My name is Neo, I'm 30 years old." # 將一串字串賦值給變數 test_data result_int = re.findall('d', test_data) # 使用 findall 函數並傳入 'd' 的匹配規則匹配 test_data(只匹配數位) result_Space = re.findall('s', test_data) # 使用 findall 函數並傳入 'd' 的匹配規則匹配 test_data(只匹配空格) result_str = re.findall('w', test_data) # 使用 findall 函數並傳入 'd' 的匹配規則匹配 test_data(匹配字串) result_str_start = re.findall('AMy', test_data) # 匹配開頭為 My 的字串 result_str_start_null = re.findall('AMya', test_data) # 匹配開頭為 Mya 的字串(不存在 mya ,返回空列表) result_str_end = re.findall('old.Z', test_data) # 匹配結尾為 old. 的字串 result_str_end_null = re.findall('zold.Z', test_data) # 匹配結尾為 zold. 的字串(不存在 zold ,返回空列表) result_all = re.findall('.', test_data) # 匹配除了 n 之外的所有字元(包含空格) print(result_int) print(result_Space) print(result_str) # 從結果上來看 w 要比 d 更高階一些,不僅匹配了 str,也匹配了 int(實際上這裡的int依然是字串) print(result_str_start) print(result_str_start_null) print(result_str_end) print(result_str_end_null) # >>> 執行結果如下 # >>> ['3', '0'] # >>> [' ', ' ', ' ', ' ', ' ', ' ', ' '] # >>> ['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'N', 'e', 'o', 'I', 'm', '3', '0', 'y', 'e', 'a', 'r', 's', 'o', 'l', 'd'] # >>> ['My'] # >>> [] # >>> ['old.'] # >>> [] # >>> ['M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'N', 'e', 'o', ',', ' ', 'I', "'", 'm', ' ', '3', '0', ' ', 'y', 'e', 'a', 'r', 's', ' ', 'o', 'l', 'd', '.']
1、定義一個函數,判斷傳入引數是否包含有數位。
2、定義一個函數,判斷傳入引數是否含有數位,如果有則移除。
import re def have_number(data): # 定義一個判斷是否存在數位的函數 result = re.findall('d', data) # 利用 re 模組的 findall 函數的 d 規則判斷傳入的 data 是否存在數位 print(result) for i in result: # 利用 for 迴圈 判斷 result 的結果,如果存在返回 True ;反之返回 False return True return False def remove_number(data): result = re.findall('D', data) print(result) return ' '.join(result) if __name__ == '__main__': test_data_1 = "My name is Neo, I'm 30 year's old." test_data_2 = "it's a beautiful day to be with you" result = have_number(test_data_1) print(result) result = remove_number(test_data_1) print(result) result = re.findall('W', test_data_2) # 匹配非字母數位的資料以及下劃線 print(result)
執行結果如下圖:
1、定義一個 startwith 函數 判斷傳入資料是否是字串的開頭
2、定義一個 endwith 函數 判斷傳入資料是否是字串的結尾
import re def startswith(sub, data): _sub = 'A{}'.format(sub) result = re.findall(_sub, data) for i in result: return True return False def endswith(sub, data): _sub = '{}Z'.format(sub) result = re.findall(_sub, data) if len(result) == 0: return False else: return True if __name__ == '__main__': result = startswith('My', test_data_1) print(result) result = endswith('old.', test_data_2) print(result)
執行結果如下:
1、python 內建函數 len() 是可以獲取到字串的長度的,但是當字串中存在著空格符號的時候也會計算在長度內。
2、利用正則的知識,定義一個計算字串真實長度的函數
import re def real_len(data): result = re.findall('S', data) return len(result) if __name__ == '__main__': test_data_1 = "My name is Neo, I'm 30 year's old." test_data_2 = "it's a beautiful day to be with you" print(len(test_data_2)) result = real_len(test_data_2) print(result)
執行結果如下:
以上就是Python語法學習之正規表示式的使用詳解的詳細內容,更多關於Python正規表示式的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45