解释正则表达式中的 C# 分组构造
csharpprogrammingserver side programming更新于 2025/11/30 23:33:00
有各种类别的字符、运算符和构造可用于定义正则表达式。
其中之一就是分组构造。分组构造描述正则表达式的子表达式并捕获输入字符串的子字符串。下表列出了分组构造。
| 分组构造 | 描述 | 模式 | 匹配 |
|---|---|---|---|
| ( subexpression ) | 捕获匹配的子表达式并为其分配一个从零开始的序数。 | (\w)\1 | "deep"中的"ee" |
| (?< name >subexpression) | 将匹配的子表达式捕获到命名组中。 | (?< double>\w)\k< double> | "deep" 中的"ee" |
| (?< name1 -name2 >subexpression) | 定义平衡组定义。 | (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ | "3+2^((1-3)*(3-1))" 中的"((1-3)*(3-1))" |
| (?: subexpression) | 定义非捕获组。 | Write(?:Line)? | "Console.WriteLine()"中的"WriteLine" |
| (?imnsx-imnsx:subexpression) | 在subexpression中应用或禁用指定的选项 | A\d{2}(?i:\w+)\b | "A12xl A12XL a12xl"中的"A12xl"、"A12XL" |
| (?= subexpression) | 零宽度正向前瞻断言。 | \w+(?=\.) | "is", "ran", and "out" in "He is. The dog ran. The sun is out." |
| (?! subexpression) | 零宽度负向前瞻断言。 | \b(?!un)\w+\b | "unsure sure unity used"中的"sure"、"used" |
| (?< =subexpression) | 零宽度正向后瞻断言。 | (?< =19)\d{2}\b | "1851 1999 1950 1905 2003"中的"51"、"03" |
| (?< ! subexpression) | 零宽度负向后视断言。 | (?< !19)\d{2}\b | "ends"、"ender"在"end send endure lender"中 |
| (?> subexpression) | 非回溯(或"贪婪")子表达式。 | [13579](?>A+B+) | "1ABB", "1ABB 3ABBC 5AB 5AC"中的"3ABB"和"5AB" |

