正則中的小括號 中括號 大括號 分析

2021-10-06 17:24:29 字數 1413 閱讀 7860

乙個示例:

var reg = /^\d(18|19|20)?\d(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01])\d(\d|x|x)$/;
正規表示式的()  {}有不同的意思。

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

(\s*)表示連續的空格、製表符、其他空白。

是定義匹配的字元範圍。比如 [a-za-z0-9] 表示相應位置的字元要匹配英文本元和數字。[\s*]表示空格或者*號。

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

(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配數字(注意後面有 *,為0次或多次,即可以為空)[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)匹配到的內容,而$3則獲取到了(ccc)匹配到的內容,而$4則獲取的是由(eee)匹配到的內容,因為前一對括號沒有儲存變數

4、a(?=bbb) 順序環視 表示a後面必須緊跟3個連續的b

5、(?i:***x) 不區分大小寫 (?s:.*) 跨行匹配.可以匹配回車符

方括號是單個匹配,字符集/排除字符集/命名字符集

示例:1、[0-3],表示找到這乙個位置上的字元只能是0到3這四個數字,與(abc|bcd|cde)的作用比較類似,但圓括號可以匹配多個連續的字元,而一對方括號只能匹配單個字元

2、[^0-3],表示找到這乙個位置上的字元是除了0到3之外的所有字元,即不能為0-3的數字

3、[:digit:] 0-9 [:alnum:] a-za-z0-9

()和有本質的區別

()內的內容表示的是乙個子表示式,()本身不匹配任何東西,也不限制匹配任何東西,只是把括號內的內容作為同乙個表示式來處理,例如(ab),就表示ab一起連續出現最少1次,最多3次。如果沒有括號的話,ab,就表示a,後面緊跟的b出現最少1次,最多3次。另外,括號在匹配模式中也很重要。這個就不延伸了,有興趣可以自己查查

表示匹配的字元在中,並且只能出現一次,並且特殊字元寫在會被當成普通字元來匹配。例如[(a)],會匹配(、a、)、這三個字元。

所以() 無論是作用還是表示的含義,都有天壤之別,沒什麼聯絡

小括號 中括號 大括號(正規表示式)

一 小括號 中括號 大括號的區別 1 小括號 匹配小括號內的字串,可以是乙個,也可以是多個,常跟 或 符號搭配使用,是多選結構的 示例1 string name way2014 regex way zgw result 結果是可以匹配出way的,因為是多選結構,小括號是匹配字串的 示例2 strin...

Python小括號 中括號 大括號和尖括號的含義

在使用python做專案的過程中發現這種語言使用了很多種型別的括號來表達資料型別,常見的有四種,分別是 小括號 中括號 和大括號,也叫做花括號,還有尖括號 其作用也各不相同,分別用來代表不同的python基本內建資料型別。1 python中的小括號 代表tuple元組資料型別,元組是一種不可變序列。...

shell中的大括號和小括號

2009 7 23 13 27 32 在這裡我想說的是幾種shell裡的小括號,大括號結構和有括號的變數,命令的用法,如下 1.2.cmd 3.和 4.5.exp 6.var pattern var pattern var pattern var pattern 現在分述如下 1.shell中變數的...