正規表示式實踐

2021-10-06 02:10:53 字數 2295 閱讀 4382

正規表示式通常用來檢索、替換符合匹配某個模式的文字。

字元匹配

. 代表任意單個字元,乙個字母、數字或漢字等

[ ] 代表指定範圍內的字元, [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...