正則表達式中 () 、[] 、{}的區別


 

地址:https://www.cnblogs.com/richiewlq/p/7307581.html

 

正文內容

正則表達式的() [] {} 有着不同的意思。

() 是為了提取匹配字符串的,表達式中有幾個()就有幾個相應的匹配字符串

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

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

{}一般是用來匹配的長度。比如\s{3}表示匹配三個空格,\s[1,3]表示匹配1到3個空格

(0-9)匹配'0-9'本身。[0-9]*匹配數字(注意后面有*,可以為空)[0-9]+匹配數字(注意后面有+,不可以為空),

{0-9}寫法是錯誤的

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



圓括號()是組,主要應用在限制多選結構的范圍/分組/捕獲文本/環視/特殊模式處理

示例:

1(abc|bcd|cde),表示這一段是abc、bcd、cde三者之一,順序也必須一致

2、(abc)? 表示這一組要么一起出現,要么不出現,出現那則按順序出現

3、(?:abc)表示找到一樣abc的一組,但是不記錄,不保存到變量中,否則可以通過x取第幾個括號所匹配道德項

,比如:

(aaa)(bbb)(ccc)(?:ddd)(eee)可以用1(aaa)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之外的所有字符

3、[:digit:] 0-9 [:alnum] A-Za-z0-9


 

()和[]有本質的區別

()內的內容表示的是一個表達式,()本身不匹配任何東西,也不惜那是匹配任何東西,只是把括號內的內容作為

同一個表達式來處理,例如(ab){1,3},就表示ab一起連續出現最少1次,最多三次。如果沒有括號的話,ab{1,3},

就表示a 后面緊跟的b出現的最少一次,最多三次。另外,括號在匹配模式中也跟重要。這個就不延伸了。

[]表示匹配字符在[]中,兵出現一次,並且reshuffle字符寫在[]會被當成普通字符來匹配,例如[(a)],會匹配(、a、)、這三個字符。

所以()[] 無論是作用還是表示的含義。都有天壤之別,沒有什么聯系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM