常用分组语法
| 分类 | 代码/语法 | 说明 |
| 捕获 |
(exp) |
匹配exp,并捕获文本到自动命名的组里 |
| (?<name>exp) |
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) |
| (?:exp) |
匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
| 零宽断言 |
(?=exp) |
匹配exp前面的位置 |
| (?<=exp) |
匹配exp后面的位置 |
| (?!exp) |
匹配后面跟的不是exp的位置 |
| (?<!exp) |
匹配前面不是exp的位置 |
| 注释 |
(?#comment) |
这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |
//提取payaccno中间的账号
string input = @"
<payaccno>6227000000000000001</payaccno>
<payaccname>张三</payaccname>
<payaccno>6227000000000000002</payaccno>
<payaccname>李四</payaccname>
";
Regex reg = new Regex(@"(?<=<payaccno>)(d+)(?=</payaccno>)+");
var matches = reg.Matches(input);
string result = "";
foreach (var m in matches)
{
result += m + ",";
}
result = result.TrimEnd(',');
//结果:6227007201840000001,6227007201840000002