成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

?*或+正則表達(dá)式使用詳解

開發(fā) 后端
?*或+正則表達(dá)式使用詳解主要向你介紹了在實(shí)現(xiàn)重復(fù)的時(shí)候,我們使用?*或+的情況,那么希望對(duì)于這樣具體的?*或+正則表達(dá)式使用詳解對(duì)你有所幫助。

?*或+正則表達(dá)式使用詳解是向你介紹我們使用?*或+實(shí)現(xiàn)“重復(fù)”的操作,那么具體的有哪些方面呢?我們下面通過實(shí)例的講解形式向你逐一介紹,希望對(duì)你有所幫助。

?*或+正則表達(dá)式使用詳解之相關(guān)概念:

?:告訴引擎匹配前導(dǎo)字符0次或一次。事實(shí)上是表示前導(dǎo)字符是可選的。

+:告訴引擎匹配前導(dǎo)字符1次或多次

*:告訴引擎匹配前導(dǎo)字符0次或多次

<[A-Za-z][A-Za-z0-9]*>匹配沒有屬性的HTML標(biāo)簽,“<”以及“>”是文字符號(hào)。第一個(gè)字符集匹配一個(gè)字母,第二個(gè)字符集匹配一個(gè)字母或數(shù)字。

我們似乎也可以用<[A-Za-z0-9]+>。但是它會(huì)匹配<1>。但是這個(gè)正則表達(dá)式在你知道你要搜索的字符串不包含類似的無效標(biāo)簽時(shí)還是足夠有效的。

◆?*或+正則表達(dá)式使用詳解之限制性重復(fù)

許多現(xiàn)代的正則表達(dá)式實(shí)現(xiàn),都允許你定義對(duì)一個(gè)字符重復(fù)多少次。詞法是:{min,max}。min和max都是非負(fù)整數(shù)。如果逗號(hào)有而max被忽略了,則max沒有限制。如果逗號(hào)和max都被忽略了,則重復(fù)min次。

因此{(lán)0,}和*一樣,{1,}和+ 的作用一樣。

你可以用<<\b[1-9][0-9]{3}\b>>匹配1000~9999之間的數(shù)字(“\b”表示單詞邊界)。<<\b[1-9][0-9]{2,4}\b>>匹配一個(gè)在100~99999之間的數(shù)字。

◆?*或+正則表達(dá)式使用詳解之注意貪婪性

假設(shè)你想用一個(gè)正則表達(dá)式匹配一個(gè)HTML標(biāo)簽。你知道輸入將會(huì)是一個(gè)有效的HTML文件,因此正則表達(dá)式不需要排除那些無效的標(biāo)簽。所以如果是在兩個(gè)尖括號(hào)之間的內(nèi)容,就應(yīng)該是一個(gè)HTML標(biāo)簽。

許多正則表達(dá)式的新手會(huì)首先想到用正則表達(dá)式<< <.+> >>,他們會(huì)很驚訝的發(fā)現(xiàn),對(duì)于測(cè)試字符串,“This is a <EM>first</EM> test”,你可能期望會(huì)返回<EM>,然后繼續(xù)進(jìn)行匹配的時(shí)候,返回</EM>。

但事實(shí)是不會(huì)。正則表達(dá)式將會(huì)匹配“<EM>first</EM>”。很顯然這不是我們想要的結(jié)果。原因在于“+”是貪婪的。也就是說,“+”會(huì)導(dǎo)致正則表達(dá)式引擎試圖盡可能的重復(fù)前導(dǎo)字符。只有當(dāng)這種重復(fù)會(huì)引起整個(gè)正則表達(dá)式匹配失敗的情況下,引擎會(huì)進(jìn)行回溯。也就是說,它會(huì)放棄最后一次的“重復(fù)”,然后處理正則表達(dá)式余下的部分。和“+”類似,“?*”的重復(fù)也是貪婪的。

◆?*或+正則表達(dá)式使用詳解之深入正則表達(dá)式引擎內(nèi)部

讓我們來看看正則引擎如何匹配前面的例子。第一個(gè)記號(hào)是“<”,這是一個(gè)文字符號(hào)。第二個(gè)符號(hào)是“.”,匹配了字符“E”,然后“+”一直可以匹配其余的字符,直到一行的結(jié)束。然后到了換行符,匹配失敗(“.”不匹配換行符)。于是引擎開始對(duì)下一個(gè)正則表達(dá)式符號(hào)進(jìn)行匹配。也即試圖匹配“>”。到目前為止,“<.+”已經(jīng)匹配了“<EM>first</EM> test”。引擎會(huì)試圖將“>”與換行符進(jìn)行匹配,結(jié)果失敗了。于是引擎進(jìn)行回溯。結(jié)果是現(xiàn)在“<.+”匹配“<EM>first</EM> tes”。于是引擎將“>”與“t”進(jìn)行匹配。顯然還是會(huì)失敗。這個(gè)過程繼續(xù),直到“<.+”匹配“<EM>first</EM”,“>”與“>”匹配。于是引擎找到了一個(gè)匹配“<EM>first</EM>”。記住,正則導(dǎo)向的引擎是“急切的”,所以它會(huì)急著報(bào)告它找到的第一個(gè)匹配。而不是繼續(xù)回溯,即使可能會(huì)有更好的匹配,例如“<EM>”。所以我們可以看到,由于“+”的貪婪性,使得正則表達(dá)式引擎返回了一個(gè)最左邊的最長的匹配。

◆?*或+正則表達(dá)式使用詳解之用懶惰性取代貪婪性

一個(gè)用于修正以上問題的可能方案是用“+”的惰性代替貪婪性。你可以在“+”后面緊跟一個(gè)問號(hào)“?”來達(dá)到這一點(diǎn)。“*”,“{}”和“?”表示的重復(fù)也可以用這個(gè)方案。因此在上面的例子中我們可以使用“<.+?>”。讓我們?cè)賮砜纯凑齽t表達(dá)式引擎的處理過程。

再一次,正則表達(dá)式記號(hào)“<”會(huì)匹配字符串的第一個(gè)“<”。下一個(gè)正則記號(hào)是“.”。這次是一個(gè)懶惰的“+”來重復(fù)上一個(gè)字符。這告訴正則引擎,盡可能少的重復(fù)上一個(gè)字符。因此引擎匹配“.”和字符“E”,然后用“>”匹配“M”,結(jié)果失敗了。引擎會(huì)進(jìn)行回溯,和上一個(gè)例子不同,因?yàn)槭嵌栊灾貜?fù),所以引擎是擴(kuò)展惰性重復(fù)而不是減少,于是“<.+”現(xiàn)在被擴(kuò)展為“<EM”。引擎繼續(xù)匹配下一個(gè)記號(hào)“>”。這次得到了一個(gè)成功匹配。引擎于是報(bào)告“<EM>”是一個(gè)成功的匹配。整個(gè)過程大致如此。

◆?*或+正則表達(dá)式使用詳解之惰性擴(kuò)展的一個(gè)替代方案

我們還有一個(gè)更好的替代方案。可以用一個(gè)貪婪重復(fù)與一個(gè)取反字符集:“<[^>]+>”。之所以說這是一個(gè)更好的方案在于使用惰性重復(fù)時(shí),引擎會(huì)在找到一個(gè)成功匹配前對(duì)每一個(gè)字符進(jìn)行回溯。而使用取反字符集則不需要進(jìn)行回溯。

最后要記住的是,本教程僅僅談到的是正則導(dǎo)向的引擎。文本導(dǎo)向的引擎是不回溯的。但是同時(shí)他們也不支持惰性重復(fù)操作。

?*或+正則表達(dá)式使用詳解的基本內(nèi)容就向你介紹到這里,希望對(duì)你學(xué)習(xí)?*或+正則表達(dá)式使用詳解有所幫助。

【編輯推薦】

  1. 正則表達(dá)式匹配數(shù)字實(shí)例解析
  2. 正則表達(dá)式匹配字符串實(shí)現(xiàn)詳解
  3. 正則表達(dá)式入門必學(xué)的星星點(diǎn)點(diǎn)
  4. 正則表達(dá)式引擎淺析
  5. 正則表達(dá)式字符集探究
責(zé)任編輯:仲衡 來源: IT168
相關(guān)推薦

2009-09-16 18:19:34

正則表達(dá)式組

2009-09-16 16:22:04

正則表達(dá)式匹配

2009-08-03 17:27:14

C#正則表達(dá)式

2024-10-17 17:03:43

SQL正則表達(dá)式MySQL

2010-03-25 18:25:36

Python正則表達(dá)式

2023-10-07 08:25:09

Java處理工具正則表達(dá)式

2018-09-27 15:25:08

正則表達(dá)式前端

2011-08-16 17:28:49

iPhone SDK正則表達(dá)式

2011-08-23 17:46:09

LUA正則表達(dá)式模式

2009-09-16 14:32:43

PHP正則表達(dá)式替換

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2024-09-14 09:18:14

Python正則表達(dá)式

2019-07-25 17:00:44

Python正則表達(dá)式字符串

2009-09-16 14:22:44

preg_match正

2010-07-14 09:47:04

Perl正則表達(dá)式

2009-08-20 16:23:32

C#正則表達(dá)式語法

2016-11-10 16:21:22

Java 正則表達(dá)式

2009-09-16 17:15:57

正則表達(dá)式引擎

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2023-09-13 08:12:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 黄色成人在线观看 | 在线看h| 中文字幕一区二区在线观看 | 亚洲91av| 在线国产欧美 | 一区福利视频 | 国产色婷婷久久99精品91 | 亚洲精品www久久久久久广东 | 麻豆毛片 | 亚洲国产网 | 中文成人在线 | 欧美在线网站 | 我想看国产一级毛片 | 国产亚洲一区二区精品 | 国产精品久久久久久久久久妞妞 | 久久久久久国产精品免费免费 | 三级视频在线观看电影 | 伊人网99 | 午夜影院 | 国产亚洲一区精品 | 日本一区二区在线视频 | 精品国产视频在线观看 | 91精品国产91久久久久久吃药 | 欧美男人亚洲天堂 | www.国产| 亚洲色综合 | 日韩欧美大片在线观看 | 久久久久久久久中文字幕 | 中文字幕一区二区三区在线观看 | 97超碰在线免费 | 国产成人一区二区三区久久久 | 亚洲精品乱码久久久久久按摩观 | 99久久精品免费看国产高清 | 在线观看国产视频 | 欧美中文一区 | 在线一区二区观看 | 日本一本视频 | 91精品国产色综合久久 | 国产亚洲精品精品国产亚洲综合 | 欧美一区二区在线视频 | 自拍偷拍第1页 |