分組構造劃分正規表示式的子表示式並捕獲輸入字串的子字串。下表列出了一些常見的分組構造:
分組構造 | 描述 | 模式 | 匹配 |
---|---|---|---|
( subexpression ) |
捕獲匹配的子表示式並為其分配一個從零開始的序號。 | (\w)\1 |
"ee" 匹配 "deep" |
(?< name >subexpression) |
將匹配的子表示式捕獲到一個命名組中。 | (?< double>\w)\k< double> |
"ee" 匹配 "deep" |
(?< name1 -name2 >subexpression) |
定義一個平衡組定義。 | (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ |
"((1-3)*(3-1))" 匹配 "3+2^((1-3)*(3-1))" |
(?: subexpression) |
定義一個非捕獲組。 | Write(?:Line)? |
"WriteLine" 匹配 "Console.WriteLine()" |
(?imnsx-imnsx:subexpression) |
在子表示式中應用或禁用指定的選項。 | A\d{2}(?i:\w+)\b |
"A12xl" , "A12XL" 匹配 "A12xl A12XL a12xl" |
(?= subexpression) |
零寬度積極的前瞻斷言。 | \w+(?=\.) |
"is" , "ran" 和 "out" 匹配 "He is. The dog ran. The sun is out." |
(?! subexpression) |
零寬度負向檢視斷言。 | \b(?!un)\w+\b |
"sure" , "used" 匹配 "unsure sure unity used" |
(?< =subexpression) |
零寬度正向後斷言。 | (?< =19)\d{2}\b |
"51" , "03" 匹配 "1851 1999 1950 1905 2003" |
(?< ! subexpression) |
零寬度否定向後斷言。 | (?< !19)\d{2}\b |
"ends" , "ender" 匹配 "end sends endure lender" |
(?> subexpression) |
Nonbacktracking(或「貪婪」)子表示式。 | [13579](?>A+B+) |
"1ABB" , "3ABB" 和 "5AB" 匹配 "1ABB 3ABBC 5AB 5AC" |