欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

grep正則表達(dá)式匹配中括號的方法實例

 更新時間:2022年09月19日 10:17:44   作者:愛博客大伯  
正則中的括號有不同的意義,不同的字符在括號中也有不同的意義,下面這篇文章主要給大家介紹了關(guān)于grep正則表達(dá)式匹配中括號的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 匹配中括號,例如匹配 String[] args

$ echo "String[] args" | grep -Eo "[][0-9a-zA-Z ]+"
String[] args		(這一行是匹配到的結(jié)果)

(1)grep -E 加上 -E 表示采用正則表達(dá)式進(jìn)行匹配。加 -o 參數(shù),表示只輸出匹配到的部分。

(2)正則表達(dá)式中,表示 Character class (字符組)的中括號:即下面例子中最外層的中括號,例如 [0-9]+ 匹配一個或多個 0 到 9 的數(shù)字,[0-9a-z]+ 匹配一個或多個 0 到 9、小 a 到 小 z 的字符。

(3)在字符組中使用中括號,也就是說在中括號里還有中括號。 匹配中括號 [ ]時,需要把中括號放到字符組的最前面,且] 在前,[在后。(如下面例子中的 [][0-9a-zA-Z ]+

echo "String[] args" | grep -E "[[]0-9a-zA-Z ]+" 這樣是不匹配 String[] args 的。

[ 可以匹配到左中括號,例如,這種形式 [0-9a-zA-Z []+ 可以匹配到左中括號,無法匹配右中括號:

$ echo "String[] args" | grep -Eo "[0-9a-zA-Z []+"
String[		(這一行是匹配到的結(jié)果)
 args		(這一行是匹配到的結(jié)果)

說明:加 -o 參數(shù),表示只輸出匹配到的部分??梢钥吹街黄ヅ涞搅?String[,沒有右中括號。

其他情況的輸出結(jié)果:

$ echo "String[] args" | grep -Eo "[0-9a-zA-Z []]+"
[]		(這一行是匹配到的結(jié)果)

說明:這個正則表達(dá)式 [0-9a-zA-Z [[]]+ 實際被解釋為 [0-9a-zA-Z [[]]+ 了。[0-9a-zA-Z [[] 匹配左中括號,接著是 ]+ 匹配右中括號。

$ echo "String[] args" | grep -Eo "[]0-9a-zA-Z []+"String[] args(這一行是匹配到的結(jié)果)$ echo "String[] args" | grep -Eo "[]0-9a-zA-Z []+"
String[] args		(這一行是匹配到的結(jié)果)

說明:[]0-9a-zA-Z []+ 是可以匹配 String[] args 的,需要把 ] 放到最前面。[ 放到后面也可以。

注意:一定要加 -o 參數(shù)。

2. 匹配大括號,例如匹配 {abc 123}

大括號 { } 在中括號中沒有順序關(guān)系。也不用必須放在中括號的最前面。

這幾種形式都可以: [}{0-9a-zA-Z ]+, [{}0-9a-zA-Z ]+[0-9a-zA-Z {}]+,[0-9a-zA-Z }{]+

$ echo "{abc 123}" | grep -Eo "[}{0-9a-zA-Z ]+"
{abc 123}		(這一行是匹配的結(jié)果)

$ echo "{abc 123}" | grep -Eo "[{}0-9a-zA-Z ]+"
{abc 123}		(這一行是匹配的結(jié)果)

3. 同時匹配中括號和大括號,例如匹配 new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}

[][}{0-9a-zA-Z, ]+ ,[][{}0-9a-zA-Z, ]+[]}{0-9a-zA-Z[, ]+,[]}{0-9a-zA-Z, []+[]0-9a-zA-Z[, {}]+,[]0-9a-zA-Z, {}[]+ 都可以。

中括號中的 ] 在前,[在后,即 ][

大括號 { }先后沒有關(guān)系。

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[][}{0-9a-zA-Z, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}		(這一行是匹配的結(jié)果)

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[][{}0-9a-zA-Z, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}		(這一行是匹配的結(jié)果)

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[]}{0-9a-zA-Z[, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}

4. 總結(jié)

(1)匹配字符組中的中括號時(中括號里的中括號),] 需要在最前面,[ 的位置可以放在中間或者最后面。

(2)用 [ 或者 [[ 都可以匹配左中括號。

(3)匹配字符組中的大括號,此時大括號沒有特殊含義,所以 { }的位置可以隨意一些(但不要破壞其他區(qū)間)。

5. 參考

https://stackoverflow.com/questions/30044199/how-can-i-match-square-bracket-in-regex-with-grep

[…] If a bracket expression specifies both ‘-’ and ‘]’, the ‘]’ shall be placed first (after the ‘^’, if any) and the ‘-’ last within the bracket expression.
Therefore, your regex should be:
echo "fdsl[]" | grep -Eo "[][ a-z]+"

總結(jié)

到此這篇關(guān)于grep正則表達(dá)式匹配中括號的文章就介紹到這了,更多相關(guān)grep正則匹配中括號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論