圓括号()是組,主要應用在限制多選結構的範圍/分組/捕獲文本/環視/特殊模式處理
示例:
1、(abc|bcd|cde),表示這一段是abc、bcd、cde三者之一均可,順序也必須一緻
2、(abc)?,表示這一組要麼一起出現,要麼不出現,出現則按此組内的順序出現
3、(?:abc)表示找到這樣abc這樣一組,但不記錄,不儲存到$變量中,否則可以通過$x取第幾個括号所比對到的項,比如:(aaa)(bbb)(ccc)(?:ddd)(eee),可以用$1擷取(aaa)比對到的内容,而$3則擷取到了(ccc)比對到的内容,而$4則擷取的是由(eee)比對到的内容,因為前一對括号沒有儲存變量
4、a(?=bbb) 順序環視 表示a後面必須緊跟3個連續的b
5、(?i:xxxx) 不區分大小寫 (?s:.*) 跨行比對.可以比對回車符
方括号是單個比對,字元集/排除字元集/命名字元集
1、[0-3],表示找到這一個位置上的字元隻能是0到3這四個數字,與(abc|bcd|cde)的作用比較類似,但圓括号可以比對多個連續的字元,而一對方括号隻能比對單個字元
2、[^0-3],表示找到這一個位置上的字元隻能是除了0到3之外的所有字元
()和[]有本質的差別
()内的内容表示的是一個子表達式,()本身不比對任何東西,也不限制比對任何東西,隻是把括号内的内容作為同一個表達式來處理,例如(ab){1,3},就表示ab一起連續出現最少1次,最多3次。如果沒有括号的話,ab{1,3},就表示a,後面緊跟的b出現最少1次,最多3次。另外,括号在比對模式中也很重要。這個就不延伸了,LZ有興趣可以自己查查
[]表示比對的字元在[]中,并且隻能出現一次,并且特殊字元寫在[]會被當成普通字元來比對。例如[(a)],會比對(、a、)、這三個字元。
是以() [] 無論是作用還是表示的含義,都有天壤之别,沒什麼聯系