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

Rod*_*Rod 6 c# regex

鉴于:

var input = "test <123>";

Regex.Matches(input, "<.*?>");
Run Code Online (Sandbox Code Playgroud)

结果:

<123>
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*żew 4

您需要使用捕获组

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

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

更好、更高效的正则表达式可以是<([^>]*)>(它匹配<,然后匹配并捕获>到第 1 组中除然后仅匹配之外的任何零个或多个字符>)。请参阅正则表达式演示

在此输入图像描述