【現(xiàn)學(xué)現(xiàn)忘&Shell編程】— 27.基礎(chǔ)正則表達式練習(xí)(二)

(3)"."練習(xí)

正則表達式.匹配除了換行符外任意一個字符。

舉個例子:

文本test2.txt內(nèi)容如下:

abc adapt?適應(yīng) xyz
abc adopt?采用 xyz
xyz adept?內(nèi)行 abc
xyz floor?地板?abc
xyz flour?面粉?abc
  • 匹配在d和t這兩個字母之間一定有兩個字符的單詞
    執(zhí)行命令:grep "d..t" test2.txt

  • 結(jié)合*使用
    執(zhí)行命令:grep "z.*a" test2.txt


    配置的是a和z兩個字母之間有任何字符的內(nèi)容。

  • 如果想匹配所有內(nèi)容,標(biāo)準(zhǔn)寫法為.*
    執(zhí)行命令:grep ".*" test2.txt

(4)"^"和"$"練習(xí)

正則表達式"^"匹配行首,"$"匹配行尾。

文本test2.txt內(nèi)容如下:

abc adapt?適應(yīng) xyz
abc adopt?采用 xyz

xyz adept?內(nèi)行 abc.
xyz floor?地板?abc
xyz flour?面粉?abc
  • ^代表匹配行首,比如^a會匹配以小寫a開頭的行:
    執(zhí)行命令:grep "^a" test2.txt

  • $代表匹配行尾,如果c$會匹配以小寫c結(jié)尾的行:
    執(zhí)行命令:grep "c$" test2.txt

  • ^$則會匹配空白行:
    執(zhí)行命令:grep "^$" test2.txt


    在實際的應(yīng)用中,我們很少這樣使用,一般使用grep命令的-v選項進行取反,來過濾掉空白行。(標(biāo)準(zhǔn)方式)
    執(zhí)行命令:grep -v "^$" test2.txt

  • $結(jié)合.使用
    如果我們要匹配以句號.結(jié)果的行,那是否用.$來進行匹配呢?
    我們先來執(zhí)行一下命令:rep ".$" test2.txt

    我們看到是匹配了任意字符結(jié)尾的行,只是過濾的空白行。
    也就是說正則表達式.$中的.是正則符號的意思,表示匹配除了換行符外任意一個字符。
    如果我們想匹配以句號.結(jié)束的行,我們需要在.前加入轉(zhuǎn)義符,把.變成普通字符串,如:\.$。
    執(zhí)行命令:grep "\.$" test2.txt

說明:
在使用"^"匹配行首,"$"匹配行尾的時候,如果使用的是特殊符號開頭或者結(jié)尾,我們需要使用轉(zhuǎn)義符進行轉(zhuǎn)義,再進行匹配。

(5)"[ ]"練習(xí)

正則表達式"[ ]"匹配中括號中指定的任意一個字符,只匹配一個字符。(注意只能匹配一個字符。)
比如[abc]要么會匹配一個a字符,要么會匹配一個b字符,或者要么會匹配一個c字符。

文本test.txt

abc adapt 適應(yīng) abc
ABC adopt 采用 xyz

abc adept 內(nèi)行 XYZ
123 floor 地板 ABC
123 flour 面粉 123
  • 配置adapt、adopt、adept這三個近似的單詞
    執(zhí)行命令:grep "ad[ae]pt" test2.txt


    可以看出[].的匹配范圍更精準(zhǔn),請根據(jù)實際情況,按需使用。

  • [0-9]會匹配任意一個數(shù)字
    執(zhí)行命令:grep "[0-9]" test2.txt

  • [A-Z]會匹配一個大寫字母
    執(zhí)行命令:grep "[A-Z]" test2.txt
  • ^[a-z]代表匹配用小寫字母開頭的行
    執(zhí)行命令:grep "^[a-z]" test2.txt

(6)"[^]"練習(xí)

正則表達式[^]匹配除中括號的字符以外的任意一個字符。

就相當(dāng)于在[]中的內(nèi)容進行取反。

文本test.txt

abc adapt 適應(yīng) abc
ABC adopt 采用 xyz

abc adept 內(nèi)行 XYZ
123 floor 地板 ABC
123 flour 面粉 123
  • 不匹配數(shù)字
    執(zhí)行命令:grep "[^0-9]" test2.txt

  • 不匹配以數(shù)字開頭的行
    執(zhí)行命令:grep "^[^0-9]" test2.txt

  • 不匹配英文
    執(zhí)行命令:rep "[^a-zA-Z]" test2.txt

  • 匹配不以英文結(jié)尾的行
    執(zhí)行命令:rep "[^a-zA-Z]$" test2.txt

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容