<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
符號 | 描述 |
---|---|
re1 | re2 | 匹配正規表示式 re1 或者 re2 ;re1 與 re2 代表兩個匹配的字串資訊 |
^ | 匹配字串起始部分 |
$ | 匹配字串終止部分(也就是末尾部分) |
* | 匹配0次或者多次前面出現的正規表示式 |
+ | 匹配1次或者多次前面出現的正規表示式 |
{N} | 匹配 N 次前面出現的正規表示式 |
{M, N} | 匹配 M - N 次前面出現的正規表示式 |
[…] | 匹配來自字元集的任意單一字元 |
[…x-y…] | 匹配 x-y 範圍內的任意單一字元 |
[^…] | 不匹配此字元集內出現的任何一個字元,包括某一範圍的字元(如果在此字元集中出現) |
將特殊字元無效化 |
通過這樣的描述可能大家很難理解,接下來我們看一些簡單的例子,幫助理解它們的用法。(下文範例順序按照上述表格順序排列)
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('Neo|proton|com|mail', test_data)) # >>> 執行結果如下: # >>> ['Neo', 'proton', 'mail', 'com']
PS:|
為 或 的關係,只要存在就能捕獲;匹配到的順序只按照字串的順序返回,而不是按照匹配規則返回。
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('^Neo', test_data)) # >>> 執行結果如下: # >>> ['Neo'] print(re.findall('^HanMeiMei', test_data)) # 沒有開頭是 HanMeiMei 的資料 # >>> 執行結果如下: # >>> []
PS:^
匹配字串起始部分; 等同於上一章節我們學習的 A
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('com$', test_data)) # >>> 執行結果如下: # >>> ['com'] print(re.findall('com.cn$', test_data)) # 沒有結尾是 com.cn 的資料 # >>> 執行結果如下: # >>> []
PS:$
匹配字串末尾部分; 等同於上一章節我們學習的 Z
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('w*', test_data)) # 匹配 0 次 或者 多次 數位或字母,[含空格]((解決上一章節的思考問題 # >>> 執行結果如下: # >>> ['Neo', '', 'protonmail', '', 'com', '']
PS:匹配 0 次 或者 多次 數位或字母,[含空格]((解決上一章節的思考問題)
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('w+', test_data)) # 匹配 1 次 或者 多次 數位或字母,[不含空格] # >>> 執行結果如下: # >>> ['Neo', 'protonmail', 'com']
w+
: 匹配1次或者多次數位或者字母@
和 .
:屬於 0 次 範圍,不會被匹配出來程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('w{3}', test_data)) # 匹配3次數位或者字母 # >>> 執行結果如下: # >>> ['Neo', 'pro', 'ton', 'mai', 'com'] print(re.findall('[a-z]{3}', test_data)) # 匹配小寫的 [a-z] 3次 # >>> 執行結果如下: # >>> ['pro', 'ton', 'mai', 'com']
w
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('w{1,5}', test_data)) # 匹配 1 次 到 5次 的數位或字母[這是一個範圍] # >>> 執行結果如下: # >>> ['Neo', 'proto', 'nmail', 'com'] print(re.findall('w{1, 5}', test_data)) # >>> 執行結果如下: # >>> []
程式碼範例如下:
import re test_data = 'Neo@protonmail.com' print(re.findall('[^Neo]', test_data)) # 這裡的 ^ 不再代表開始的位置,而是不匹配 Neo 此字元集 # >>> 執行結果如下: # >>> ['@', 'p', 'r', 't', 'n', 'm', 'a', 'i', 'l', '.', 'c', 'm']
PS:[^...]
這裡中括號內的 ^
不再代表開始的位置,而是過濾掉當前字元集中的字元。
符號 | 描述 |
---|---|
() | 在匹配規則中獲取指定的資料 |
程式碼範例如下:
import re data = "My name is Neo, I'm 30 year's old." result = re.search('My name is (.*), I'm (.*) year's old.', data) # search 函數是一個獲取組的概念 print(result.groups()) # >>> 執行結果如下: # >>> ('Neo', '30') print(result.group(1)) # 獲取 組 的第一個資料 # >>> 執行結果如下: # >>> Neo print(result.group(2)) # 獲取 組 的第二個資料 # >>> 執行結果如下: # >>> 30
利用 search 函陣列的概念,獲取指定字串中指定的資料。
在上文的例子中,我們使用的 '.*'
或者 'w+'
等的這種匹配0次或者多次就是屬於 貪婪模式
而非貪婪模式,就是可以匹配到多個資訊,但是進行了限制,就是非貪婪模式。實現非貪婪模式,通過?
組合程式設計非貪婪模式。
如 d+?
或者 w*?
等模式
以上就是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