C# Regex,仅当它存在于当前字符串中时才匹配

C# Regex,仅当它存在于当前字符串中时才匹配,c#,.net,regex,C#,.net,Regex,首先,对于可能出现的拼写/语法错误,我深表歉意。我试图解决一些复杂的正则表达式问题,但我似乎不知道如何解决。我试图过滤掉某些字符串的某些部分。然而,这是可行的!有一行是可选的,那就是第二行,电子邮件。我如何告诉正则表达式这部分是可选的,应该只搜索字符串中是否存在它 字符串 [评论]喵喵叫[127.0.0.1] [评论]影子[/127.0.0.1] [评论][电子邮件]Foxy[/127.0.0.1] [评论][email2]PerfectAim[/127.0.0.1] 我尝试过的 Regex

首先,对于可能出现的拼写/语法错误,我深表歉意。我试图解决一些复杂的正则表达式问题,但我似乎不知道如何解决。我试图过滤掉某些字符串的某些部分。然而,这是可行的!有一行是可选的,那就是第二行,电子邮件。我如何告诉正则表达式这部分是可选的,应该只搜索字符串中是否存在它

字符串

  • [评论]喵喵叫[127.0.0.1]
  • [评论]影子[/127.0.0.1]
  • [评论][电子邮件]Foxy[/127.0.0.1]
  • [评论][email2]PerfectAim[/127.0.0.1]
我尝试过的

Regex regexUserCommented = new Regex(
    @"(\[COMMENT\])\ " +  // COMMENT
    @"(\[.*\]) " +        // Email, this needs to be optional but how?!
    @"(\w(?<!\d)[\w'-]*)" // User
);

if (regexUserCommented.IsMatch(test))
{
    var infoMatches = regexUserCommented.Split(test);
    Console.WriteLine(infoMatches[3]); // User
}
Regex regexUserCommented=new Regex(
@“(\[注释\])\”+//注释
@“(\[.\])”+//电子邮件,这需要是可选的,但如何选择?!
@(\w(?)。

使用组

Regex regexUserCommented = new Regex(
    @"(\[COMMENT\])\ " +  // COMMENT
    @"((\[.*\]) )?" +        // Email, this needs to be optional but how?!
    @"(\w(?<!\d)[\w'-]*)" // User
);

var match = regexUserCommented.Match(test);

if (match.Groups.Count == 5)
{
    Console.WriteLine("==> {0}", match.Groups[4].Value);
}
else
{
    Console.WriteLine("==> Not matched");
}
Regex regexUserCommented=new Regex(
@“(\[注释\])\”+//注释
@“(\[.\])?”+//电子邮件,这需要是可选的,但如何选择?!

@“(\w(?您可能需要一个(匹配零次或一次)。例如,
(\[.\])?
。您是否尝试过@”([.])?”@rutter这似乎可以在atm:)中使用,但如何从
var infoMatches=regexUserCommented.Split(test)中的结果中排除它?”
?对所有问题表示抱歉>:@rutter Nevermind!我已经让它工作了^-^,稍后将发布解决方案,如果您愿意,您也可以发布。(您的解决方案工作正常,执行错误)。是的,很抱歉没有发布答案,不得不去工作等。我将接受您的答案,因为它解决了问题:)。