C# Regex查找存储在变量中的电子邮件后的前20个字符

C# Regex查找存储在变量中的电子邮件后的前20个字符,c#,regex,C#,Regex,这是我到目前为止掌握的代码,我对regex非常陌生,不太清楚它是如何工作的。“emailFound”之后的前20个字符如何获取 谢谢你可以试试这个: string subject = null; string toFind = "["+emailFound+"]([.20])"; Match match = Regex.Match(messageText, toFind, RegexOptions.IgnoreCase); if (match.Suc

这是我到目前为止掌握的代码,我对regex非常陌生,不太清楚它是如何工作的。“emailFound”之后的前20个字符如何获取

谢谢你可以试试这个:

string subject = null;
string toFind = "["+emailFound+"]([.20])";

        Match match = Regex.Match(messageText, toFind, RegexOptions.IgnoreCase);


            if (match.Success)
            {
                subject = match.Value;

        }    
    MessageBox.Show(subject);
(?s)
允许点匹配换行符(您可以删除它并在
匹配
方法中添加
RegexOptions.SingleLine

{20}
二十个字符


没有更多的错误,但现在它只是找不到任何东西后,电子邮件发现

这是因为您需要在检查匹配实例后获取值

string toFind = Regex.Escape(emailFound)+"(?s)(.{20})";

请参见

[.20]
表示“匹配这些字符中的任何一个”
2
0
”不起作用,恐怕我正在进行“解析”\Qanyemail@gmail.com\E(?s)(.{.20})“-无法识别的转义序列\E@ÁppleAssassin11:抱歉,
\Q..\E
功能在.net中不存在。您必须改用
Regex.Escape
。)没有更多的错误,但现在它只是在发现邮件后才发现任何东西……非常令人沮丧@Áppleassassinsin11:你想找到什么?
string toFind = Regex.Escape(emailFound) + "(?s)(.{20})";

Match match   = Regex.Match(messageText, toFind);

if (match.Success) {
  subject = match.Groups[1].Value; // Get the Group value
}