亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

詳解c正則表達(dá)式應(yīng)用 c正則表達(dá)式提取字符串


詳解c正則表達(dá)式應(yīng)用 c正則表達(dá)式提取字符串

文章插圖
前言:授人以魚不如授人以漁,大家在編程的時(shí)候總會遇到要查找某些復(fù)雜規(guī)則的字符串,例如在 linux 系統(tǒng)中,需要對多個(gè)文件里的某段代碼進(jìn)行替換,你是不是還在每個(gè)文件打開逐一目標(biāo)替換?如果你也有這樣的困惑那么正則表達(dá)式就是你必須會的技能 。
推薦一個(gè)github的程序員資料倉庫:
1、什么是正則表達(dá)式正則表達(dá)式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè) “規(guī)則字符串”,這個(gè) “規(guī)則字符串” 用來表達(dá)對字符串的一種過濾邏輯 。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼 。
很可能你使用過 Windows 下用于文件查找的通配符(wildcard),也就是 * 和 ? 。如果你想查找某個(gè)目錄下的所有的 pdf 文檔的話,可以直接搜索 *.pdf,如下:
在這里,* 會被解釋成任意的字符串 。和通配符類似,正則表達(dá)式也是用來進(jìn)行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求 。當(dāng)然,代價(jià)就是更復(fù)雜,比如你可以編寫一個(gè)正則表達(dá)式,用來查找所有以 0 開頭,后面跟著 2-3 個(gè)數(shù)字,然后是一個(gè)連字號 “-”,最后是 7 或 8 位數(shù)字的字符串(像 011-12345678 或 0856-7654321) 。
2、入門學(xué)習(xí)正則表達(dá)式的最好方法是從例子開始 。
假如你在一篇英文期刊里查找 me,你可以使用正則表達(dá)式 me 。這幾乎是最簡單的正則表達(dá)式了,它可以精確匹配這樣的字符串:由兩個(gè)字符組成,前一個(gè)字符是 m, 后一個(gè)是 e 。通常,處理正則表達(dá)式的工具會提供一個(gè)忽略大小寫的選項(xiàng),如果選中了這個(gè)選項(xiàng),它可以匹配 me, ME, Me, mE 這四種情況中的任意一種 。
不幸的是,很多單詞里包含 hi 這兩個(gè)連續(xù)的字符,比如 me, mean, measure等等 。用 me 來查找的話,這里邊的 me 也會被找出來 。如果要精確地查找 me 這個(gè)單詞的話,我們應(yīng)該使用 bmeb 。
b 是正則表達(dá)式規(guī)定的一個(gè)特殊代碼(有些人叫它元字符,metacharacter),代表著單詞的開頭或結(jié)尾,也就是單詞的分界處 。雖然通常英文的單詞是由空格,標(biāo)點(diǎn)符號或者換行來分隔的,但是 b 并不匹配這些單詞分隔字符中的任何一個(gè),它只匹配一個(gè)位置 。
假如你要找的是 me 后面不遠(yuǎn)處跟著一個(gè) james,你應(yīng)該用 bmeb.*bjamesb 。這里 . 是另一個(gè)元字符,匹配除了換行符以外的任意字符 。* 同樣是元字符,不過它代表的不是字符,也不是位置,而是數(shù)量——它指定 * 前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個(gè)表達(dá)式得到匹配 。
因此 .* 連在一起就意味著任意數(shù)量的不包含換行的字符 ?,F(xiàn)在bmeb.*bjamesb的意思就很明顯了:先是一個(gè)單詞 me 然后是任意個(gè)任意字符(但不能是換行),最后是 james 這個(gè)單詞 。
3、元字符正則表達(dá)式由一些普通字符和一些元字符(metacharacters)組成 。普通字符包括大小寫的字母和數(shù)字,而元字符則具有特殊的含義,要想真正的用好正則表達(dá)式,正確的理解元字符是最重要的事情 。下表列出了常用的元字符
4、字符轉(zhuǎn)義如果想查找元字符本身的話,比如查找 . ,或者 * ,就出現(xiàn)了問題:你沒辦法指定它們,因?yàn)樗鼈儠唤忉尦蓜e的意思 。這時(shí)就得使用來取消這些字符的特殊意義 。因此,應(yīng)該使用 . 和 * 。當(dāng)然,要查找本身,也得用。
例如:mayday.net 匹配 mayday.net,C:\Windows匹配C:Windows 。
5、重復(fù)已經(jīng)看過了前面的 * , + 幾個(gè)匹配重復(fù)的方式了 。下面是正則表達(dá)式中所有的限定符(指定數(shù)量的代碼:
6、字符類要想查找數(shù)字、字母、數(shù)字、空白已經(jīng)很簡單,因?yàn)橐呀?jīng)有了對應(yīng)這些字符集合的元字符,但是如果你想匹配沒有預(yù)定義元字符的字符集合(比如元音字母 a,e,i,o,u ),應(yīng)該怎么辦?


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: