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