版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
在這6{m,n}來表示(*)(+)(?)這3表示量詞的星號(*和加號()可能沒你那么簡單,我用一個例子給你講解一下。我們先看一下加號(+),使用+在aabb對應(yīng)的對應(yīng)的Python代>>>import>>>re.findallr'a+',4a*aaabb以找到4個匹配結(jié)果。使用Python4代代>>>import>>>re.findall(r'a*',['aaa','','',4但這一次的結(jié)果匹配到了三次空字符串。為什么會匹配到空字符串呢?因為星號(*)0到多次,匹配0次就是空字符串。到這里,你可能會有疑問,如果這樣,aaa部分應(yīng)該這就引入了我們今天要講的話題,貪婪與非貪婪模式。這兩種模式都必須滿足匹配次數(shù)的要求才能匹配上。貪婪模式,簡單說就是盡可能進行最長匹配。非貪婪模式呢,則會盡可能進行最短匹配。正是這兩種模式產(chǎn)生了不同的匹配結(jié)果。首先,我們來看一下在字符串a(chǎn)aabb中使用正則a*a*在匹配開頭的a時,會嘗試盡量匹配的a,直到第一個字母b不滿足要求為止,匹配上三個a,后面每次匹配時都得到了空字符串。相信看到這里你也發(fā)現(xiàn)了,貪婪模式的特點就是盡可能進行最大長度匹配。所以要不要使用貪婪模式是根據(jù)需求場景來定的。如果我們想盡可能最短匹配呢?那就要用到非貪婪匹配模變成了a*?。此時的匹配結(jié)果如下:代代>>>importre.findall(r'a*','aaabb')#['aaa','','',>>>re.findall(r'a*?','aaabb')#['','a','','a','','a','','',aaregex=“xy{1,3}z”text=個,但字符串中后面是個z就會導(dǎo)致匹配不上,這時候正則就會向前回溯,吐出當(dāng)前字符z,接著用正則中的z去匹配。regex=“xy{1,3}?z”text=由于y{1,3}?代表匹配1到3個y,盡可能少地匹配。匹配上一個y之后,也就是在匹配上text中的xy后,正則會使用z和text中的xy后面的y比較,發(fā)現(xiàn)正則z和y不匹配,這時正則就會向前回溯,重新查看y匹配兩個的情況,匹配上正則中的xyy,然后再用z去匹配text中的z,匹配成功?;厮?,這樣的話就比較節(jié)省時間。具體的方法就是在量詞后面加上加號(+)regex=“xy{1,3}+yz”text=“xyyz”Python和Go代代>>>import>>>re.findall(r'xy{1,3}+yz',error:multiplerepeatatposition4PyPIregex代代123456789注意:需要先安裝regex模塊,pipinstall>>>import>>>regex.findall(r'xy{1,3}z','xyyz')#>>>'xyyz')#>>>regex.findall(r'xy{1,2}+yz','xyyz')#JavaPerl如果你用a{1,3}+ab去匹配aaab字符串,a{1,3}+會把前面三個a都用掉,并且不會回溯,這樣字符串中內(nèi)容只剩下b了,導(dǎo)致正則中加號后面的a匹配不到符合要求的內(nèi)容,匹配失敗。如果是貪婪模式a{1,3}或非貪婪模式a{1,3}?都可以匹配上。這里我簡單總結(jié)一下,獨占模式性能比較好,可以節(jié)約匹配的時間和CPU資源,但有些情況下并不能滿足需求,要想使用這個模式還要看具體需求(比如我們接下來要講的案例另外還得看你當(dāng)前使用的語言或庫的支持程度。正則回溯 上的。Lazada賣家中心名代代1^([A-Za-z0-9._()&'\-2代代1^([符合要求的組成1]|[符合要求的組成你需要留意的是,正則中有個加號(+),這樣會導(dǎo)致大量回溯,占用大量CPU資源,線上問題,我們只需要將貪婪模式改成占模式就可以解決這個問題。我之前,要根據(jù)具體情況來選擇合適的模式,在這個例子中,匹配不上時證明名不合法,不需要進行回溯,因此我們可以使用獨占模式,但要注意并不是說所有的場合都可以用獨占模式解決,我們要首先保證正則能滿足功能需求。仔細再看一下這個正則,你會發(fā)現(xiàn)“組成”和”部分中-Z-z英文字母在兩個集合里面重復(fù)出現(xiàn)了,這會導(dǎo)致回溯后的重復(fù)判斷。這里要強調(diào)一下,并不是說有回溯就會導(dǎo)致問題,你應(yīng)該盡量減少回溯后的計算量,這些在后面的原理講解中我們會進一步學(xué)另外,騰訊云技術(shù)社區(qū)也有類似的技術(shù)文章,你如果感,可以點擊這里進行查 Somepeople,whenconfrontedwithaproblem,think“Iknow,I’lluseregularexpressions.”Nowtheyhavetwoproblems.所以一個小小的正則,有些時候也可能會把CPU拖垮,這也提醒我們在寫正則的時候,一定要思考下回溯問題,避免使用低效的正則,線上問題。最后我來給你總結(jié)一下:正則中量詞默認是貪婪匹配,如果想要進行非貪婪匹配需要在量詞后面加上問號。貪婪和非貪婪匹配都可能會進行回溯,獨占模式也是進行貪婪匹配,但不進行回溯,因此在一些場景下,可以提高匹配的效率,具體能不能用獨占模式需要看使用的編程語言的類庫的支持情況,以及獨占模式能不能滿足需求。有一篇英文文章,里面有很多單詞,單詞和單詞之間是用空格隔開的,在引號里面的一到多個單詞表示特殊含義,即引號里面的多個單詞要看成一個單詞。現(xiàn)在你需要提取出文章中所有的單詞。我們可以假設(shè)文章中除了引號沒有其它的標點符號,有什么方法可以解決這個問題呢?如果用正則來解決,你能不能寫出一個正則,提取出文章中所有的單詞呢(果去重)?wefound“thelittlecat”isinthehat,welike“thelittlethelittlecat 售賣。頁面已增加防盜追蹤,將依 上一 01|元字符:如何巧妙正則表達式的基本元件寫寫結(jié)合文中給的案例,知道了NFA和DFA(這個老師應(yīng)該在后面講匹配原理時會講6這里是獨占模式,不進行回溯。這里在盡可能多的匹配第三個y的時候匹配失敗,不應(yīng)該xyyzxyyz不就進行回溯了1 2xy{1,3}zxyyz2>>>import['','','','','','']1 111飛[a-11還有就是文章中的例子:xy{1,3}+yz去匹配xyyz,我的理解是用y{1,3}盡可能多的去匹xyy之后,用第三個yz,y一到三次獨占模式,雖然只匹配到了兩個,但還是滿足了次數(shù)要求,這時候沒失敗,11 11\w+|“.+?”(10matches,74steps) \w+|“(.+?)”(10matches,104只要引號內(nèi)的thelittlecatmthelittl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國精密模具數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國普通半剝扭線機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國彈性套柱銷式聯(lián)軸器數(shù)據(jù)監(jiān)測研究報告
- 2025年中國中號多彩蘭花口杯市場調(diào)查研究報告
- 2025至2031年中國自動化控制設(shè)備行業(yè)投資前景及策略咨詢研究報告
- 二零二五年度奶牛養(yǎng)殖廢棄物處理與資源化利用合同2篇
- 2025年度出納職務(wù)責(zé)任抵押擔(dān)保及職業(yè)培訓(xùn)合同4篇
- 二零二五年度農(nóng)家樂旅游產(chǎn)品設(shè)計與市場營銷推廣合同3篇
- 二零二五年度面料印刷與包裝服務(wù)合同4篇
- 2025年度櫥柜定制產(chǎn)品設(shè)計與創(chuàng)新獎勵合同4篇
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會課件
- 2025版高考物理復(fù)習(xí)知識清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標準版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報告2024
- 反走私課件完整版本
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
- 臨床見習(xí)教案COPD地診療教案
- 中考數(shù)學(xué)復(fù)習(xí)《平行四邊形》專項練習(xí)題-附帶有答案
評論
0/150
提交評論