正規表示式通常用來檢索、替換符合匹配某個模式的文字。
字元匹配
. 代表任意單個字元,乙個字母、數字或漢字等
[ ] 代表指定範圍內的字元, [abc]表示a,b,c 這3個字母中的任意乙個
[^ ] 表示排除[ ] 中的字元以外的字元
[:alnum:] 所有大小寫字母和數字,數量1
[:alpha:] 所有大小寫字母,數量1
[:blank:] 代表空格和tab,數量1
[:digit:] 代表數字 0-9,數量1
[:graph:] 代表可列印的非空白字元,數量1
[:lower:] 所有小寫字母,數量1
[:print:] 所有可列印字元,數量1
[:punct:] 所有標點符號,數量1
[:upper:] 所有大寫字母,數量1
1.1.1.1
[root@oracle ~]
# cat aaa
123.222.1.0
123.222.1.a
b123.222.1.a
b.b.1.b
b.1.1.b
1.1.1.1
.2.1.2.2
[root@oracle ~]
# cat aaa | grep "^ [0-9] \.[0-9]\.[0-9]\.[0-9]\$"
123.222.1.0
1.1.1.1
當然,頭尾如果不加控制首字元錨定^和尾部錨定$ 就會出現不準確的情況
[root@oracle ~]
# cat aaa | grep "[0-9]\.[0-9]\.[0-9]\.[0-9]\$"
123.222.1.0
1.1.1.1
.2.1.2.2
[root@oracle ~]
# cat aaa | grep "[0-9]\.[0-9]\.[0-9]\.[0-9]\"
123.222.1.0
123.222.1.a
b123.222.1.a
1.1.1.1
.2.1.2.2
[root@oracle ~]
# ifconfig | grep "[0-9]\.[0-9]\.[0-9]\.[0-9]\$"
inet addr:192.168.97.185 bcast:192.168.99.255 mask:255.255.252.0
inet addr:127.0.0.1 mask:255.0.0.0
當看到00:50:56:85也被匹配的時候覺得很奇怪,後來才意識到自認為 "."作為連線符,其實.是代表任何乙個字元。
[root@oracle ~]
# ifconfig | grep -o "[0-9]\"."[0-9]\.[0-9]\.[0-9]\"
00:50:56:85
192.168.97.185
192.168.99.255
255.255.252.0
47588670
23555188
4089882108
4806630348
127.0.0.1
255.0.0.0
63794003
63794003
75216216011
75216216011
於是想到用轉義字元. 才正確得到結果
[root@oracle ~]
# ifconfig | grep -o "[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\"
192.168.97.185
192.168.99.255
255.255.252.0
127.0.0.1
255.0.0.0
實驗3:分組
[root@oracle ~]
# echo rootrootroottt | grep "\(root\)\"
rootrootroottt
實驗4:顯示/etc/passwd中的兩位或三位數
bash[root@oracle ~]
# getent passwd | grep -o "\<[0-9]\\>" | sort -n
雖然 grep 「[0-9]」 /etc/passwd也能匹配,但因為grep是包含,所以四位數也會被匹配到
因此要卯丁錨定詞首和詞尾 < 和 >
mysql正規表示式實踐
1 統計表中category為空且http host為ip位址的行數。select count from log http 5 where category and http host regexp 0 9 0 9 0 9 2 字串拼接select concat username,id from a...
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式教程 實踐篇
在js中建立正則有兩種辦法,字面量和new,和建立其他型別變數一樣 var reg abc g 字面量 var reg new regexp abc g new方式,意思和上面一樣 js中用到正則的地方有兩個入口,正則的api和字串的api,regexp test等於regexp.prototype...