(x) 捕獲性圓括號:匹配x,並捕獲匹配項。
(?:x) 非捕獲性圓括號: 匹配x,但是不捕獲匹配項。
正規表示式一般情況下的匹配道德字串稱為分組0,按照匹配項中圓括號出現的順序會獲得分組1,分組2……等等
例如:
console.log(/([0-9])/.exec('3 + 4'));
console.log(/(?:[0-9])/.exec('3 + 4'));
console.log(/[0-9]/.exec('3 + 4'));
console.log(/([0-9])(\s)/.exec('3 + 4'));
//輸出
//["3", "3"] 後邊的 3 就是捕獲組所獲取的,最後乙個例子是有兩個捕獲組所以會有三個元素(包含分組0)
//["3"]
//["3"]
//["3 ", "3", " "]
補充: 當圓括號後跟有*時,那捕獲組獲得的是最後乙個值,示例**:
var str = 'for more information, see chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);
console.log(found);
// logs [ 'see chapter 3.4.5.1',
// 'chapter 3.4.5.1',
// '.1',
// index: 22,
// input: 'for more information, see chapter 3.4.5.1' ]
// 'see chapter 3.4.5.1' 是整個匹配。
// 'chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕獲。
// '.1' 是被'(\.\d)'捕獲的最後乙個值。
// 'index' 屬性(22) 是整個匹配從零開始的索引。
// 'input' 屬性是被解析的原始字串。
Python 正規表示式 或者 圓括號
或者 import re m re.search abc xyz xyz abc xyz 兩個中間取乙個,or if m is not none print m.group else print not find 圓括號 import re abc abcabc abc abcc m re.sear...
精通正規表示式三 非捕獲型括號
在精通正規表示式一中講到了反向引用,其中的括號就是捕獲型括號,它具有分組和捕獲的作用,但是,有時候我們需要用到非捕獲型括號,比如我已經寫好了乙個程式,現在我要擴充套件正規表示式的功能,比如加乙個 這樣並沒有影響原來的功能而且能匹配比原來跟多的東西,但是,它打亂了原來的組的反向引用順序,如果恰好這個分...
正規表示式 非捕獲分組
目前為止,總共介紹了括號的三種用途 分組,將相關的語速歸攏到一起,構成單個元素 多選結構,規定可能出現的多個子表達示 引用分組,將子表示式匹配的文字儲存起來,供之後引用。這三種用途並不是彼此獨立的,而是互相重疊的 單純的分組可以視為 只包含乙個多選分支的多選結構 整個多選結構也會被視為單個元素,可以...