亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1. 匹配中括號(hào),例如匹配 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 (字符組)的中括號(hào):即下面例子中最外層的中括號(hào),例如 [0-9]+ 匹配一個(gè)或多個(gè) 0 到 9 的數(shù)字,[0-9a-z]+ 匹配一個(gè)或多個(gè) 0 到 9、小 a 到 小 z 的字符。

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

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

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

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

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

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

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

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

$ 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. 匹配大括號(hào),例如匹配 {abc 123}

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

這幾種形式都可以: [}{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. 同時(shí)匹配中括號(hào)和大括號(hào),例如匹配 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, {}[]+ 都可以。

中括號(hào)中的 ] 在前,[在后,即 ][

大括號(hào) { }先后沒有關(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)匹配字符組中的中括號(hào)時(shí)(中括號(hào)里的中括號(hào)),] 需要在最前面,[ 的位置可以放在中間或者最后面。

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

(3)匹配字符組中的大括號(hào),此時(shí)大括號(hào)沒有特殊含義,所以 { }的位置可以隨意一些(但不要破壞其他區(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á)式匹配中括號(hào)的文章就介紹到這了,更多相關(guān)grep正則匹配中括號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論