在正则表达式捕获组中不包含某些内容的方法

时间:2017-08-15 18:31:15

标签: c# regex

假设:

var input = "test <123>";

Regex.Matches(input, "<.*?>");

结果:

<123>

给我我想要的结果,但包括尖括号。哪个好,因为我可以轻松地进行搜索和替换。我只是想知道是否有办法在表达式中包含它?

1 个答案:

答案 0 :(得分:4)

您需要使用捕获组

var input = "test <123>";
var results = Regex.Matches(input, "<(.*?)>")
    .Cast<Match>()
    .Select(m => m.Groups[1].Value)
    .ToList();

m.Groups[1].Value可让您获得捕获组#1值。

更好,更高效的正则表达式可以是<([^>]*)>(它匹配<,然后将捕获匹配到组1中除{{1}以外的任何零个或多个字符然后只匹配>)。请参阅regex demo

enter image description here