(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
















