1. 程式人生 > 其它 >關於正則表示式第三篇(r3筆記第52天)

關於正則表示式第三篇(r3筆記第52天)

在正則表示式中,還有很多的內容值得學習。 之前的兩篇中列舉了很少的一部分。沒有做更多的分析。 -->字元組 下面的例子可以根據字元組來靈活匹配。比如輸入了Good cat或者Good hat就可以通過字元組來進行匹配。[ch]

$ echo "Good cat"|sed -n '/[ch]at/p'
Good  cat
$ echo "Nice hat"|sed -n '/[ch]at/p'
Nice hat
$echo "Yes" |sed -n  '/[Yy][Ee][Ss]/p'
Yes

當然了匹配儘管靈活也是有一定的約束的。

$ cat  a.txt
101
1234
303
30
909
$ sed -n '/[0123][0123][0123]/p'  a.txt   --可以看到,匹配的時候30,909都被過濾掉了。
101
1234
303
$ sed -n  '/^[0123][0123][0123]$/p' a.txt  --如果匹配的條件更加嚴格,把1234也給過濾掉了。
101
303

-->排除字元組 排除字元組的使用也比較廣泛,把^放進[]就是取反了。像good cat通過[^ch]來排除的時候,因為有匹配的字元cat所以就把單詞good cat全給過濾掉了。 想big boat通過[^ch]來匹配就沒有找到匹配的值,沒有排除掉,所以還是能夠輸出。

$ echo "good cat"|sed -n  '/[^ch]at/p'
$ echo "big boat"|sed -n '/[^ch]at/p'
big  boat

-->區間字元組 區間字元組就比較形象了,一看就是區間的表示。 比如輸出b.txt的內容,根據匹配條件[a-ch-m]來篩選的時候,fat tiger就沒有可匹配的情況,所以不會輸出而cat is sleeping中的cat,that is a very nice hat中的hat都是區間匹配。

$ cat b.txt
 cat is sleeping
 fat tiger 
 that is a  very nice hat
sed -n '/[a-ch-m]at/p' b.txt
 cat is sleeping
 that is a  very nice hat

-->特殊字元組 可以根據制定的字元組來更為方便的進行資料的篩選,過濾。 [[:alpha:]] 任意字母字元,大小寫都包括 [[:alnum:]] 任意數字字元,0-9,a-z,A-Z [[:blank:]] 空格或者製表符 [[:digit:]] 0-9之間的數字 [[:lower:]] 小寫字母a-z [[:upper:]] 大寫字母A-Z [[:print:]] 任意可列印字元 [[:punct:]] 標點符號 [[:space:]] 空白字元:空格,製表符,NL,FF,VT,CR 使用的例子簡單總結如下:


$ echo "abc."|sed -n  '/[[:alnum:]]/p'     --篩選任意數字
abc.
$ echo "abc."|sed -n  '/[[:alpha:]]/p'      --篩選任意字母
abc.
$ echo "abc."|sed -n  '/[[:digit:]]/p'     --篩選0-9之間的數字
$ echo "abc."|sed -n '/[[:punct:]]/p'    --篩選標點符號
abc.
$ echo "abc."|sed -n '/[[:print:]]/p'    --篩選可以列印的字元
abc.
$ echo "abc."|sed -n '/[[:lower:]]/p'   --篩選小寫字母
abc.
$ echo "abc."|sed -n '/[[:upper:]]/p  --篩選大寫字母