首先,抱歉可能出现任何拼写/语法错误。我试图解决一些复杂的正则表达式问题,但我似乎无法弄清楚如何。我试图过滤掉某些字符串的某些部分。然而,这是有效的!有一行是可选的,这是第二行,即电子邮件。我如何告诉正则表达式这部分是可选的,并且只应搜索它是否存在于字符串中。
字符串
我尝试了什么
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
}
任何人都知道如何让电子邮件部分可选? (在正则表达式中是可选的,所以如果它不在字符串中它不会做任何事情,它只是跳过电子邮件部分,抱歉我的英文不好&gt; :)。
答案 0 :(得分:0)
使用群组......
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");
}