字符搜索正则表达式语法详解
工作之余抽點(diǎn)時(shí)間出來寫寫博文,希望對(duì)新接觸的朋友有幫助。明天在這里和大家一起學(xué)習(xí)一下字符搜索
????作為一個(gè)術(shù)技,時(shí)常會(huì)到碰正則表達(dá)式相干的西東,很多時(shí)候忙著趕進(jìn)度,都是在網(wǎng)上找一個(gè)可以決解的正則表達(dá)式,或是換另外一種法方實(shí)現(xiàn),直一沒有系統(tǒng)地解了正則表達(dá)式,明天終究有時(shí)間又有閑情來具體地看看正則表達(dá)式的語法,不求成為手高,最起碼到碰問題能用正則表達(dá)式?jīng)Q解,或是拿到一個(gè)正則表達(dá)式,起碼可以看懂面里的意思......
????
“正則表達(dá)式”描述在索搜文本正文時(shí)要匹配的一個(gè)或多個(gè)字符串。該表達(dá)式可用作一個(gè)將字符模式與要索搜的字符串相匹配的模板。
正則表達(dá)式含包一般字符(例如,a 到 z 之間的母字)和特殊字符(稱為“元字符”)。
????
特殊字符下表含包了單字符元字符的表列以及它們?cè)谡齽t表達(dá)式中的為行。
| 若要匹配這些特殊字符之一,必須首先義轉(zhuǎn)字符,即,在字符面后加反斜杠字符 (\)。例如,若要索搜“+”文本字符,可應(yīng)用表達(dá)式“\+”。 |
| * | 零次或多次匹配面后的字符或子表達(dá)式。 等效于?{0,}。 | zo*?與“z”和“zoo”匹配。 |
| + | 一次或多次匹配面后的字符或子表達(dá)式。 等效于?{1,}。 | zo+?與“zo”和“zoo”匹配,但與“z”不匹配。 |
| ? | 零次或一次匹配面后的字符或子表達(dá)式。 等效于?{0,1}。 當(dāng) ?緊隨任何其他限定符(*、+、?、{n}、{n,} 或 {n,m})后之時(shí),匹配模式非是婪貪的。非婪貪模式匹配索搜到的、盡可能少的字符串,而認(rèn)默的婪貪模式匹配索搜到的、盡可能多的字符串。 | zo??與“z”和“zo”匹配,但與“zoo”不匹配。 o+??只與“oooo”中的單個(gè)“o”匹配,而?o+?與全部“o”匹配。 do(es)??與“do”或“does”中的“do”匹配。 |
| ^ | 匹配索搜字符串開始的位置。如果標(biāo)記中含包?m(多行索搜)字符,^ 還將匹配 \n 或 \r 面后的位置。 如果將 ^ 用作括號(hào)表達(dá)式中的第一個(gè)字符,則會(huì)對(duì)字符集求反。 | ^\d{3}?與索搜字符串開始處的 3 個(gè)數(shù)字匹配。 [^abc]?與除 a、b 和 c 外以的任何字符匹配。 |
| $ | 匹配索搜字符串尾結(jié)的位置。如果標(biāo)記中含包?m(多行索搜)字符,^ 還將匹配 \n 或 \r 面后的位置。 | \d{3}$?與索搜字符串尾結(jié)處的 3 個(gè)數(shù)字匹配。 |
| . | 匹配除換行符 \n 外以的任何單個(gè)字符。若要匹配含包 \n 在內(nèi)的恣意字符,請(qǐng)應(yīng)用諸如?[\s\S]?之類的模式。 | a.c?與“abc”、“a1c”和“a-c”匹配。 |
| [] | 標(biāo)記括號(hào)表達(dá)式的開始和尾結(jié)。 | [1-4]?與“1”、“2”、“3”或“4”匹配。[^aAeEiIoOuU]?與任何非元音字符匹配。 |
| {} | 標(biāo)記限定符表達(dá)式的開始和尾結(jié)。 | a{2,3}?與“aa”和“aaa”匹配。 |
| () | 標(biāo)記子表達(dá)式的開始和尾結(jié)。可以存保子表達(dá)式以備來將之用。 | A(\d)?與“A0”至“A9”匹配。存保該數(shù)字以備來將之用。 |
| | | 示指在兩個(gè)或多個(gè)項(xiàng)之間停止擇選。 | z|food?與“z”或“food”匹配。(z|f)ood?與“zood”或“food”匹配。 |
| / | 表現(xiàn) JScript 中的文本正則表達(dá)式模式的開始或尾結(jié)。在第二個(gè)“/”后添加單字符標(biāo)記可以指定索搜為行。 | /abc/gi?是與“abc”匹配的 JScript 文本正則表達(dá)式。g(全局)標(biāo)記指定查找模式的全部匹配項(xiàng),i(略忽大小寫)標(biāo)記使索搜不區(qū)分大小寫。 |
| \ | 將下一字符標(biāo)記為特殊字符、文本、反向引用或八進(jìn)制義轉(zhuǎn)符。 | \n?與換行符匹配。\(?與“(”匹配。\\?與“\”匹配。 |
大多數(shù)特殊字符在括號(hào)表達(dá)式內(nèi)出現(xiàn)時(shí)得到它們的意思,并表現(xiàn)一般字符。有關(guān)更多息信,請(qǐng)拜見匹配字符的表列中的“括號(hào)表達(dá)式中的字符”。
每日一道理試試看——不是像企鵝那樣靜靜的站在海邊,翹首企盼機(jī)會(huì)的來臨,而是如蒼鷹一般不停的翻飛盤旋,執(zhí)著的尋求。 試試看——不是面對(duì)峰回路轉(zhuǎn)、雜草叢生的前途枉自嗟嘆,而是披荊斬棘,舉步探索。 試試看——不是拘泥于命運(yùn)的禁錮,聽?wèi){命運(yùn)的擺布,而是奮力敲擊其神秘的門扉,使之洞開一個(gè)新的天地。微笑著,去唱生活的歌謠。
????
元字符下表含包了多字符元字符的表列以及它們?cè)谡齽t表達(dá)式中的為行。
| \b | 與一個(gè)字邊界匹配;即字與空格間的位置。 | er\b?與“never”中的“er”匹配,但與“verb”中的“er”不匹配。 |
| \B | 非邊界字匹配。 | er\B?與“verb”中的“er”匹配,但與“never”中的“er”不匹配。 |
| \d | 數(shù)字字符匹配。 等效于?[0-9]。 | 在索搜字符串“12 345”中,\d{2}?與“12”和“34”匹配。\d?與“1”、“2”、“3”、“4”和“5”匹配。 |
| \D | 非數(shù)字字符匹配。 等效于?[^0-9]。 | \D+?與“abc123 def”中的“abc”和“def”匹配。 |
| \w | 與以下恣意字符匹配:A-Z、a-z、0-9 和下劃線。 等效于?[A-Za-z0-9_]。 | 在索搜字符串“The quick brown fox…”中,\w+?與“The”、“quick”、“brown”和“fox”匹配。 |
| \W | 與除 A-Z、a-z、0-9 和下劃線外以的恣意字符匹配。 等效于?[^A-Za-z0-9_]。 | 在索搜字符串“The quick brown fox…”中,\W+?與“…”和全部空格匹配。 |
| [xyz] | 字符集。與任何一個(gè)指定字符匹配。 | [abc]?與“plain”中的“a”匹配。 |
| [^xyz] | 反向字符集。與未指定的任何字符匹配。 | [^abc]?與“plain”中的“p”、“l(fā)”、“i”和“n”匹配。 |
| [a-z] | 字符范圍。匹配指定范圍內(nèi)的任何字符。 | [a-z]?與“a”到“z”范圍內(nèi)的任何小寫母字字符匹配。 |
| [^a-z] | 反向字符范圍。與不在指定范圍內(nèi)的任何字符匹配。 | [^a-z]?與不在范圍“a”到“z”內(nèi)的任何字符匹配。 |
| {n} | 恰好匹配?n?次。n?非是負(fù)數(shù)整。 | o{2}?與“Bob”中的“o”不匹配,但與“food”中的兩個(gè)“o”匹配。 |
| {n,} | 最少匹配?n?次。n?非是負(fù)數(shù)整。 *?與?{0,}?等相。 +?與?{1,}?等相。 | o{2,}?與“Bob”中的“o”不匹配,但與“foooood”中的全部“o”匹配。 |
| {n,m} | 匹配最少?n?次,多至?m?次。n?和?m?非是負(fù)數(shù)整,其中?n?<=?m。逗號(hào)和數(shù)字之間不能有空格。 ??與?{0,1}?等相。 | 在索搜字符串“1234567”中,\d{1,3}?與“123”、“456”和“7”匹配。 |
| (模式) | 與模式?匹配并存保匹配項(xiàng)。您可以從由 JScript 中的?exec Method回返的數(shù)組素元中檢索存保的匹配項(xiàng)。若要匹配括號(hào)字符 ( ),請(qǐng)應(yīng)用“\(”或者“\)”。 | (Chapter|Section) [1-9]?與“Chapter 5”匹配,存保“Chapter”以備來將之用。 |
| (?:模式) | 與模式?匹配,但不存保匹配項(xiàng);即不會(huì)存儲(chǔ)匹配項(xiàng)以備來將之用。這對(duì)于用“or”字符 (|) 組合模式部件的況情很有效。 | industr(?:y|ies)?與?industry|industries?等相。 |
| (?=模式) | 極積的測(cè)預(yù)先行。找到一個(gè)匹配項(xiàng)后,將在匹配文本之前開始索搜下一個(gè)匹配項(xiàng)。不會(huì)存保匹配項(xiàng)以備來將之用。 | ^(?=.*\d).{4,8}$?對(duì)密碼應(yīng)用以下制約:其長(zhǎng)度必須介于 4 到 8 個(gè)字符之間,并且必須最少含包一個(gè)數(shù)字。 在該模式中,.*\d?查找后跟有數(shù)字的恣意多個(gè)字符。對(duì)于索搜字符串“abc3qr”,這與“abc3”匹配。 從該匹配項(xiàng)之前(而不是后之)開始,.{4,8}?與含包 4-8 個(gè)字符的字符串匹配。這與“abc3qr”匹配。 ^?和?$?指定索搜字符串的開始和結(jié)束位置。這將在索搜字符串含包匹配字符外以的任何字符時(shí)阻撓匹配。 |
| (?!模式) | 極消的測(cè)預(yù)先行。匹配與模式?不匹配的索搜字符串。找到一個(gè)匹配項(xiàng)后,將在匹配文本之前開始索搜下一個(gè)匹配項(xiàng)。不會(huì)存保匹配項(xiàng)以備來將之用。 | \b(?!th)\w+\b?與不以“th”掃尾的單詞匹配。 在該模式中,\b?與一個(gè)字邊界匹配。對(duì)于索搜字符串“ quick ”,這與第一個(gè)空格匹配。(?!th)?與非“th”字符串匹配。這與“qu”匹配。 從該匹配項(xiàng)開始,\w+?與一個(gè)字匹配。這與“quick”匹配。 |
| \cx | 匹配?x?示指的控制字符。x?的值必須在 A-Z 或 a-z 范圍內(nèi)。如果不是這樣,則定假 c 就是文本“c”字符本身。 | \cM?與 Ctrl+M 或一個(gè)回車符匹配。 |
| \xn | 匹配?n,此處的?n?是一個(gè)十六進(jìn)制義轉(zhuǎn)碼。十六進(jìn)制義轉(zhuǎn)碼必須恰好是兩位數(shù)長(zhǎng)。答應(yīng)在正則表達(dá)式中應(yīng)用 ASCII 代碼。 | \x41?與“A”匹配。\x041?等效于后跟有“1”的“\x04”(因?yàn)?n?必須恰好是兩位數(shù))。 |
| \num | 匹配?num,此處的?num?是一個(gè)正數(shù)整。這是對(duì)已存保的匹配項(xiàng)的引用。 | (.)\1?與兩個(gè)連續(xù)的同相字符匹配。 |
| \n | 標(biāo)識(shí)一個(gè)八進(jìn)制義轉(zhuǎn)碼或反向引用。如果 \n?面后最少有?n?個(gè)捕獲子表達(dá)式,那么?n?是反向引用。否則,如果?n?是八進(jìn)制數(shù) (0-7),那么?n?是八進(jìn)制義轉(zhuǎn)碼。 | (\d)\1?與兩個(gè)連續(xù)的同相數(shù)字匹配。 |
| \nm | 標(biāo)識(shí)一個(gè)八進(jìn)制義轉(zhuǎn)碼或反向引用。如果 \nm?面后最少有?nm?個(gè)捕獲子表達(dá)式,那么?nm?是反向引用。如果 \nm?面后最少有?n?個(gè)捕獲子表達(dá)式,則?n?是反向引用,面后跟有文本?m。如果上述況情都不存在,當(dāng)?n?和?m?是八進(jìn)制數(shù)字 (0-7) 時(shí),\nm?匹配八進(jìn)制義轉(zhuǎn)碼?nm。 | \11?與制表符匹配。 |
| \nml | 當(dāng)?n?是八進(jìn)制數(shù)字 (0-3),m?和?l?是八進(jìn)制數(shù)字 (0-7) 時(shí),匹配八進(jìn)制義轉(zhuǎn)碼?nml。 | \011?與制表符匹配。 |
| \un | 匹配?n,其中?n?是以四位十六進(jìn)制數(shù)表現(xiàn)的 Unicode 字符。 | \u00A9?與版權(quán)符號(hào) (?) 匹配。 |
????
非打印字符下表含包表現(xiàn)非打印字符的義轉(zhuǎn)列序。
| \f | 換頁(yè)符。 | \x0c?和?\cL |
| \n | 換行符。 | \x0a?和?\cJ |
| \r | 回車符。 | \x0d?和?\cM |
| \s | 任何空白字符。其中含包空格、制表符和換頁(yè)符。 | [\f\n\r\t\v] |
| \S | 任何非空白字符。 | [^\f\n\r\t\v] |
| \t | Tab 字符。 | \x09?和?\cI |
| \v | 垂直制表符。 | \x0b?和?\cK |
????
優(yōu)先級(jí)序順正則表達(dá)式的算計(jì)式方與算術(shù)表達(dá)式非常相似;即從左到右停止算計(jì),并循遵優(yōu)先級(jí)序順。
下表按從高到低的序順含包了正則表達(dá)式運(yùn)算符的優(yōu)先級(jí)序順。
| \ | 義轉(zhuǎn)符 |
| (), (?:), (?=), [] | 括號(hào)和中括號(hào) |
| *、+、?、{n}、{n,}、{n,m} | 限定符 |
| ^、$、\任何元字符 | 定位點(diǎn)和列序 |
| | | 替換 |
字符擁有高于替換運(yùn)算符的優(yōu)先級(jí),例如,答應(yīng)“m|food”匹配“m”或“food”。
文章結(jié)束給大家分享下程序員的一些笑話語錄: 祝大家在以后的日子里. 男生象Oracle般健壯; 女生象win7般漂亮; 桃花運(yùn)象IE中毒般頻繁; 錢包如Gmail容量般壯大, 升職速度趕上微軟打補(bǔ)丁 , 追女朋友像木馬一樣猖獗, 生活像重裝電腦后一樣幸福, 寫程序敲代碼和聊天一樣有**。
轉(zhuǎn)載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/09/3069863.html
總結(jié)
以上是生活随笔為你收集整理的字符搜索正则表达式语法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哔哩哔哩有弹幕的tv版怎么安装到电视上
- 下一篇: 使用ACE_SOCK_SEQPACK_A