婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 正則表達式量詞與貪婪的使用詳解

正則表達式量詞與貪婪的使用詳解

熱門標簽:怎么在高德地圖標注行走軌跡 百度地圖標注飯店位置怎么 安徽移動外呼系統 施工地圖標注怎么做 個性化地圖標注在線 深圳400電話辦理那家好 襄陽房產電銷機器人招商 清遠陽山400電話號碼如何申請 百度地圖標注名編輯

0.寫在前面

在上一篇文章中,我們學習了正則的一些基礎元字符,相信大家都已經忘卻的差不多了,可以點擊上面的鏈接再溫習下。

今天我們一起來學習下正則中量詞的三種匹配模式,貪婪模式、非貪婪模式、獨占模式,這些模式會改變正則中量詞的匹配行為,是每次貪婪的匹配到更多呢,還是不貪婪見好就收呢,如果不了解這些,我們寫出的正則很可能是錯誤的,甚至會引發嚴重的線上性能問題。

1.量詞

本篇文章所講的內容和量詞關系比較密切,先回顧下:

我們還可以用 {m,n} 的方式來表示 * + ? 這3種元字符:

元字符 同義表示方法 示例
* {0,} ab*
可以匹配
a 或者 abb
+ {1,} ab+
可以匹配
ab 或者 abb
但不能匹配 a
? {0,1} ab?
可以匹配 a 或者 ab
但不能匹配 abb

2.貪婪模式前傳

在正則中,表示次數的量詞默認是貪婪的,在貪婪模式下,會盡可能最大長度的去匹配目標字符串,我們用正則 a+a* 來匹配字符串 aaabb 測試一下。

2.1 使用 a+ 進行匹配

可以看到只匹配到了1個結果 aaa

對應的 Python 代碼如下:

import re

print(re.findall(r'a+', 'aaabb'))

輸出:['aaa']

2.2 使用 a* 進行匹配

可以看到匹配到了4個結果,其中還有3個是空字符串

對應的 Python 代碼如下:

import re

print(re.findall(r'a*', 'aaabb'))

輸出:['aaa', '', '', '']

為什么會匹配到空字符串呢?因為星號(*)代表匹配0到多次,匹配0次就是空字符串,那前面還有個 aaa 呢,為什么 aaa 之間的空字符串沒有被匹配到?

這就引入到了我們今天要講的,貪婪模式與非貪婪模式,從字面上很好理解,貪婪模式就是盡可能多的匹配,非貪婪模式就是盡可能少的匹配。

3.貪婪模式

一起來分析下上面正則 a* 的匹配過程:

字符串 a a a b b 空字符串
下標 0 1 2 3 4 5

匹配 開始 結束 說明 匹配內容
第一次 0 3 到第一個字母b發現不匹配,輸出aaa aaa
第二次 3 3 匹配剩下的bb,發現匹配不上,輸出空字符串 空字符串
第三次 4 4 匹配剩下的b,發現匹配不上,輸出空字符串 空字符串
第四次 5 5 匹配剩下的空字符串,輸出空字符串 空字符串

a* 在匹配字符串 aaabb 時,會盡可能多的把前面的 a 都匹配上,直到第一個字母 b 不滿足要求為止,匹配上3個 a,后面每次匹配的都是空字符串。

看到這里,相信你已經對貪婪模式有了更深的印象,貪婪模式的特點就是盡可能進行最大長度匹配,就是有多少要多少,下面我們在一起來看下與它完全相反的匹配模式。

4.非貪婪模式

上面講完了貪婪模式,貪婪模式是盡可能最大長度匹配,非貪婪模式就是盡可能最小長度匹配,在量詞的后面加一個問號(?),就成了非貪婪模式,比如 a*?

對應的 Python 代碼如下:

import re

// 貪婪匹配
print(re.findall(r'a*', 'aaabb'))

輸出:['aaa', '', '', '']

// 非貪婪匹配
print(re.findall(r'a*?', 'aaabb'))

輸出:['', 'a', '', 'a', '', 'a', '', '', '']

學完了貪婪模式與非貪婪模式,你可能會問,我什么情況下會用到呢,下面舉個栗子感受下:

需求是查找一段字符串中,所有雙引號括起來的內容,上面使用貪婪匹配與非貪婪匹配的對比,差別很明顯對吧。

5.獨占模式

不管是貪婪模式,還是非貪婪模式,匹配過程中都需要發生回溯才能完成想要的功能,但是在有一些場景,我們不需要回溯,匹配不上直接返回失敗就可以了,因此正則匹配中還有另外一種模式,獨占模式,它和貪婪模式很像,但匹配過程中不會發生回溯,在一些使用場景中性能會更好。

先來講講什么是回溯,再舉個栗子,有一個正則表達式和目標字符串,我們分別看下在三種匹配模式下都發生了什么:

5.1 貪婪匹配過程

正則表達式:ab{1,3}c

目標字符串:abbc

在匹配時,b{1,3} 會盡可能長的去匹配目標字符串,匹配完 abb 之后,因為要盡可能長的匹配(3個 b),目標字符串中的c就會匹配不上,這個時候會發生向前回溯,吐出當前字符 c,用正則中的 c 去匹配,匹配成功。

import regex

print(regex.findall(r'ab{1,3}c', 'abbc'))

輸出:['abbc']

5.2 非貪婪匹配過程

正則表達式:ab{1,3}?c

目標字符串:abbc

在匹配時,b{1,3} 會盡可能短的去匹配目標字符串,匹配完 ab 之后,會直接用正則 c 去匹配目標字符串剩下的 b,匹配不上,發生向前回溯,重新用正則 b{1,3} 匹配 目標字符串剩下的 b,然后正則 c 匹配 目標字符串剩下的 c,匹配成功。

import regex

print(regex.findall(r'ab{1,3}?c', 'abbc'))

輸出:['abbc']

5.3 獨占匹配過程

在量詞后面加上 + 就是獨占模式。

正則表達式:ab{1,2}+bc

目標字符串:abbc

在匹配時,b{1,2} 會盡可能長的去匹配目標字符串,匹配完 abb 之后,會用正則 b 匹配目標字符串剩下的 c,匹配不上,不回溯,匹配失敗。

import regex

print(regex.findall(r'ab{1,2}+bc', 'abbc'))

輸出:[]

6.寫在最后

最后在總結下上面講到的內容:

到這里,正則表達式的量詞與貪婪就講完了,如果有問題可以給我留言評論,謝謝。

正則表達式在線校驗工具:https://regex101.com/

到此這篇關于正則表達式量詞與貪婪的使用詳解的文章就介紹到這了,更多相關正則表達式 量詞與貪婪內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 十分鐘上手正則表達式 上篇
  • 正則表達式常見的4種匹配模式小結
  • 正則表達式分組與引用的使用
  • 正則表達式那些讓人頭暈的元字符
  • 正則表達式之分組的回溯引用問題
  • 十分鐘上手正則表達式 下篇

標簽:駐馬店 欽州 黑河 延邊 臨夏 南昌 阜陽 中衛

巨人網絡通訊聲明:本文標題《正則表達式量詞與貪婪的使用詳解》,本文關鍵詞  正則,表達式,量詞,與,貪婪,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正則表達式量詞與貪婪的使用詳解》相關的同類信息!
  • 本頁收集關于正則表達式量詞與貪婪的使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久精品亚洲乱码伦伦中文 | 色视频成人在线观看免| 久久99久久精品欧美| 亚洲成人免费视频| 亚洲成人福利片| 日本不卡在线视频| 狠狠色狠狠色综合系列| 久久国产三级精品| 国产精品小仙女| 不卡一区二区在线| 欧美在线观看你懂的| 欧美精品久久99| 久久免费午夜影院| 国产精品灌醉下药二区| 亚洲制服丝袜av| 久草在线在线精品观看| 大桥未久av一区二区三区中文| eeuss鲁一区二区三区| 欧美亚洲一区二区在线观看| 91精品国产欧美一区二区| 久久亚洲二区三区| 樱花影视一区二区| 国产真实乱子伦精品视频| 波多野结衣一区二区三区| 91福利社在线观看| 精品国产一区久久| 樱桃视频在线观看一区| 蜜桃传媒麻豆第一区在线观看| 福利视频网站一区二区三区| 欧美优质美女网站| 欧美精品一区二区在线播放| 亚洲欧美日韩电影| 久久精品国产在热久久| 一本大道av一区二区在线播放| 欧美一级高清片在线观看| 国产精品久久久久四虎| 男女性色大片免费观看一区二区| 99免费精品在线观看| 精品少妇一区二区| 午夜精品久久久久影视| 不卡视频免费播放| 精品成人一区二区三区| 亚洲一区二区三区四区在线| 国产.欧美.日韩| 精品国产区一区| 亚洲电影一区二区三区| www.66久久| 久久久www成人免费毛片麻豆| 天天色天天爱天天射综合| eeuss鲁一区二区三区| 久久日一线二线三线suv| 精品亚洲成av人在线观看| 色综合久久天天综合网| 久久久一区二区三区| 免费人成黄页网站在线一区二区| 欧洲视频一区二区| 亚洲免费在线观看视频| 99麻豆久久久国产精品免费| 中文字幕欧美激情| 国产精品99久| 久久久国产精品不卡| 久久99日本精品| 精品日韩一区二区三区免费视频| 日韩中文字幕91| 欧美精三区欧美精三区| 亚洲国产综合视频在线观看| 在线国产亚洲欧美| 亚洲国产日韩在线一区模特| 91国产免费观看| 亚洲自拍都市欧美小说| 欧美日韩视频在线第一区 | 欧美精品第一页| 亚洲第一狼人社区| 在线综合视频播放| 久久精品国产精品亚洲精品| 精品国一区二区三区| 国产精品综合av一区二区国产馆| 欧美精品一区二区三区在线播放| 国产乱子伦视频一区二区三区| 久久久久九九视频| 国产91精品久久久久久久网曝门 | 国产精品美女久久久久久久网站| 国产91对白在线观看九色| 国产日韩精品一区二区浪潮av| 国产精品资源在线观看| 欧美国产精品v| 一本到三区不卡视频| 亚洲一区二区偷拍精品| 欧美成人官网二区| 福利电影一区二区| 亚洲三级在线观看| 91精品久久久久久久91蜜桃| 国产成人亚洲综合a∨婷婷图片| 国产精品久久久久久妇女6080| 91成人网在线| 色综合久久久久综合99| 亚洲国产成人av| 久久久一区二区| 欧美午夜精品一区二区三区| 国产一区二区三区不卡在线观看| 国产精品激情偷乱一区二区∴| 欧美日韩成人综合天天影院| 国产精品一区久久久久| 亚洲一区在线观看免费观看电影高清| 日韩一区二区在线观看视频| 国产黄色91视频| 日本亚洲免费观看| 亚洲欧洲美洲综合色网| 日韩三级视频中文字幕| 91老师片黄在线观看| 精品在线你懂的| 亚洲五码中文字幕| 国产精品传媒视频| 精品欧美久久久| 在线日韩一区二区| 粉嫩久久99精品久久久久久夜| 亚洲国产精品麻豆| 国产精品久久久久久亚洲毛片 | 精品99一区二区| 色综合久久久久网| 国产精品亚洲专一区二区三区| 午夜国产精品影院在线观看| 国产精品青草综合久久久久99| 欧美一级国产精品| 精品婷婷伊人一区三区三| 99精品视频在线免费观看| 黄一区二区三区| gogogo免费视频观看亚洲一| 美女网站在线免费欧美精品| 亚洲成人免费在线观看| 亚洲美女偷拍久久| 中文字幕亚洲一区二区va在线| 久久伊人中文字幕| 精品国产电影一区二区| 日韩视频一区在线观看| 在线播放国产精品二区一二区四区| 91网站最新地址| av电影一区二区| 不卡大黄网站免费看| www.日韩精品| 色综合久久中文综合久久牛| 色综合视频一区二区三区高清| 成人黄色a**站在线观看| 国产精品99久| 成人一区二区三区视频在线观看| 国产传媒日韩欧美成人| 国产精一品亚洲二区在线视频| 久草在线在线精品观看| 国产毛片精品国产一区二区三区| 国产精品影视在线| 成人国产精品免费观看| 91麻豆精品在线观看| 在线亚洲免费视频| 在线不卡a资源高清| 日韩你懂的在线观看| 久久亚洲一区二区三区四区| 国产欧美日韩另类一区| 成人欧美一区二区三区1314| 亚洲精品视频一区二区| 天天色天天操综合| 国产一区二区三区在线看麻豆| 国产成人自拍网| 色系网站成人免费| 91麻豆精品国产| 国产丝袜美腿一区二区三区| 亚洲免费观看高清完整| 亚洲一区二区三区中文字幕| 美女视频一区二区三区| 国产99久久久国产精品潘金 | 图片区小说区区亚洲影院| 日韩电影在线观看网站| 国产激情一区二区三区四区| 99re热视频这里只精品| 在线综合视频播放| 国产精品成人免费在线| 国产91在线|亚洲| 成人国产在线观看| 欧美女孩性生活视频| 国产午夜精品久久久久久免费视 | 美女精品一区二区| 成人免费视频视频| 91精品婷婷国产综合久久竹菊| 久久女同精品一区二区| 亚洲一区二区三区免费视频| 国内精品嫩模私拍在线| 欧美在线视频你懂得| 日本一区二区三区免费乱视频| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美在线视频全部完| 国产亚洲精品7777| 婷婷六月综合亚洲| 不卡的电影网站| 欧美va亚洲va国产综合| 亚洲综合丝袜美腿| 国产91丝袜在线播放| 日韩一级成人av| 亚洲电影你懂得| 色呦呦国产精品| 久久久久国产一区二区三区四区 | 秋霞午夜av一区二区三区|