當(dāng)前位置:首頁 >  站長 >  編程技術(shù) >  正文

linux下關(guān)于正則表達(dá)式grep的一點(diǎn)總結(jié)

 2020-11-02 11:39  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競價(jià),好“米”不錯(cuò)過

正則表達(dá)式(Regular Expression)是用于描述一組字符串特征的模式,用來匹配特定的字符串。通過特殊字符+普通字符來進(jìn)行模式描述,從而達(dá)到文本匹配目的工具

正則表達(dá)式(Regular Expression) 是用于描述一組字符串特征的模式,用來匹配特定的字符串。通過特殊字符+普通字符來進(jìn)行模式描述,從而達(dá)到文本匹配目的工具。類似于生活中常見的尋人啟示,通過描述一個(gè)人的特征來進(jìn)行“搜索匹配”

如今正則已經(jīng)被我們廣泛應(yīng)用,目前被集成到了各種文本編輯器/文本處理工具當(dāng)中

應(yīng)用場景**驗(yàn)證: **表單提交時(shí),進(jìn)行用戶名密碼驗(yàn)證。**查找: **從大量信息中快速提取指定內(nèi)容。在一批url中,查找指定url替換: 將指定格式的文本,進(jìn)行正則匹配查找,找到之后進(jìn)行特定替換,(vim文本替換等)

在很多技術(shù)領(lǐng)域(比如,自然語言處理,數(shù)據(jù)存儲等),正則表達(dá)式可以很方便的提取出我們想要的信息,所以這部分必不可少構(gòu)成基本要素字符類 數(shù)量限定符 位置限定符 特殊符號

1. 字符類:

應(yīng)用:

grep使用--color選項(xiàng)將匹配的字符串以紅色標(biāo)注出來 Linux下可以用echo $?來打印上一條命令執(zhí)行的退出碼,為0表示執(zhí)行成功,1表示失敗。

實(shí)驗(yàn)如下:

注意: 使用 . 默認(rèn)為貪心匹配,和后面的正則匹配方式相關(guān),后面再述。

2. 數(shù)量限定符:

應(yīng)用:

3. 位置限定符:

 

 

注意: 其中 \b 用來限定是目標(biāo)串中是否有以指定字符串開頭的單詞,我們稱之為詞界。 \B 稱之為非詞界

應(yīng)用:

4. 特殊符號:

可是結(jié)果好像并不如我們所愿?其實(shí)這里還與正則表達(dá)式版本有關(guān)。 正則分為以下幾個(gè)版本:

基本的正則表達(dá)式(Basic Regular Expression 又叫 Basic RegEx 簡稱 BREs) 擴(kuò)展的正則表達(dá)式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs) Perl 的正則表達(dá)式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)

在grep中指定相應(yīng)的參數(shù)即可,而這幾個(gè)版本中默認(rèn)的就是基本正則,帶上-E選項(xiàng)就是擴(kuò)展正則,而帶上-P參數(shù)就是用perl版正則。解決前面的問題,我們這里讓grep帶上-P選項(xiàng)便可解決了

版本間區(qū)別正則表達(dá)式的Extended規(guī)范和Basic規(guī)范基本相同。只是在Basic規(guī)范下,有些字符 ?+{}|() 應(yīng)解釋為普通字符,要表示上述特殊含義則需要加 \ 轉(zhuǎn)義。反之,在Extended規(guī)范下, ?+{}|() 應(yīng)該被理解成特殊含義,要取其字面值,也要對其進(jìn)行\(zhòng) \ 轉(zhuǎn)義。所以, grep 工具帶上 -E 選項(xiàng),表示使用擴(kuò)展正則來進(jìn)行匹配(亦可直接使用egrep 命令操作),若沒有,則表示使用基準(zhǔn)正則進(jìn)行匹配。帶-P選項(xiàng)使用的perl正則匹配。它是perl語言集成的最重要的一種特性,它十分強(qiáng)大,很多語言設(shè)計(jì)正則式支持的時(shí)候基本上都參考Perl的正則表達(dá)式。正則匹配模式

貪婪模式

正則表達(dá)式去匹配時(shí),會(huì)盡量多的去匹配符合條件的內(nèi)容,grep命令 默認(rèn)使用的就是貪婪匹配,

非貪婪模式 正則表達(dá)式去匹配時(shí),會(huì)盡量少的匹配符合條件的內(nèi)容 也就是說,一旦發(fā)現(xiàn)匹配符合要求,立馬就匹配成功,而不會(huì)繼續(xù)匹配下去(除非有g(shù)選項(xiàng),開啟下一組匹配)

總結(jié): 可以看到,非貪婪模式的標(biāo)識符,就是貪婪模式的標(biāo)識符后面加上一個(gè) ?

來源:腳本之家

鏈接:https://www.jb51.net/article/184539.htm

申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
正則表達(dá)式

相關(guān)文章

熱門排行

信息推薦