正則表達式(括號)、[中括號]、{大括號}的區別小結

正則表達式的() [] {}有不一樣的意思。git

() 是爲了提取匹配的字符串。表達式中有幾個()就有幾個相應的匹配字符串。正則表達式

(\s*)表示連續空格的字符串。字符串

[]是定義匹配的字符範圍。好比 [a-zA-Z0-9] 表示相應位置的字符要匹配英文字符和數字。[\s*]表示空格或者*號。it

{}通常用來表示匹配的長度,好比 \s{3} 表示匹配三個空格,\s{1,3}表示匹配一到三個空格。變量

(0-9) 匹配 '0-9′ 自己。 [0-9]* 匹配數字(注意後面有 *,能夠爲空)[0-9]+ 匹配數字(注意後面有 +,不能夠爲空){1-9} 寫法錯誤。命名

[0-9]{0,9} 表示長度爲 0 到 9 的數字字符串。英文

————————————————————————————————————————————————————————————di

 

圓括號()是組,主要應用在限制多選結構的範圍/分組/捕獲文本/環視/特殊模式處理
示例:
一、(abc|bcd|cde),表示這一段是abc、bcd、cde三者之一都可,順序也必須一致
二、(abc)?,表示這一組要麼一塊兒出現,要麼不出現,出現則按此組內的順序出現
三、(?:abc)表示找到這樣abc這樣一組,但不記錄,不保存到$變量中,不然能夠經過$x取第幾個括號所匹配到的項,好比:(aaa)(bbb)(ccc)(?:ddd)(eee),能夠用$1獲取(aaa)匹配到的內容,而$3則獲取到了(ccc)匹配到的內容,而$4則獲取的是由(eee)匹配到的內容,由於前一對括號沒有保存變量
四、a(?=bbb) 順序環視 表示a後面必須緊跟3個連續的b
五、(?i:xxxx) 不區分大小寫 (?s:.*) 跨行匹配.能夠匹配回車符字符集

方括號是單個匹配,字符集/排除字符集/命名字符集
示例:
一、[0-3],表示找到這一個位置上的字符只能是0到3這四個數字,與(abc|bcd|cde)的做用比較相似,但圓括號能夠匹配多個連續的字符,而一對方括號只能匹配單個字符
二、[^0-3],表示找到這一個位置上的字符只能是除了0到3以外的全部字符
三、[:digit:] 0-9 [:alnum:] A-Za-z0-9字符

——————————————————————————————————————————————————————————————————————

()和[]有本質的區別 ()內的內容表示的是一個子表達式,()自己不匹配任何東西,也不限制匹配任何東西,只是把括號內的內容做爲同一個表達式來處理,例如(ab){1,3},就表示ab一塊兒連續出現最少1次,最多3次。若是沒有括號的話,ab{1,3},就表示a,後面緊跟的b出現最少1次,最多3次。另外,括號在匹配模式中也很重要。這個就不延伸了,LZ有興趣能夠本身查查 []表示匹配的字符在[]中,而且只能出現一次,而且特殊字符寫在[]會被當成普通字符來匹配。例如[(a)],會匹配(、a、)、這三個字符。 因此() [] 不管是做用仍是表示的含義,都有天壤之別,沒什麼聯繫

相關文章
相關標籤/搜索