2010-11-06 92 views
1
Disposition: form-data; name="To" 

ang <[email protected]> 
-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="CC" 


-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="BCC" 


-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="Subject" 

MySubject 
-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="File"; filename=""<br/> 
Content-Type: application/octet-stream 


-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="cf_loader" 

on 
-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="File"; filename="" 
Content-Type: application/octet-stream 


-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="template_id" 


-----------------------------7da3d81f160588 
Content-Disposition: form-data; name="Body" 

MyBody 

我已经编写了获取信息并写入KeyValuePair的代码。如下:

键 - 值
要 - 昂< \ [email protected]>
CC - 空
BCC - 空
主题 - MySubject
等 我的代码使用类为此的字符串。我需要使用正则表达式,但我不明白它们。请帮助。谢谢。用正则表达式重写

+0

我不明白这个问题。你当前的代码有效,但你想用正则表达式重写它?为什么?此外,你的格式似乎搞砸了。请编辑您的问题,将实际文本复制到编辑窗口中,选中它并按下Ctrl-K将其“按原样”格式化。 – 2010-11-06 15:48:51

+0

这个强制性要求。 – user348173 2010-11-06 15:51:16

+0

这功课呢? – rerun 2010-11-06 15:53:55

回答

0

不应使用正则表达式编写MIME解析器。问题是你需要一个具有状态的解析器,并且它不适合正则表达式。

但是,您可以解析使用正则表达式的部分,因此,例如:

  • 首先由边界上分裂分裂MIME身体成几部分:var parts = mime.Split("-----------------------------7da3d81f160588");;

  • 然后,使用part.Split(new { "\r\n" }, 2, StringSplitOptions.None);提取所有标题;

  • 然后,解析标题。这可以使用正则表达式来完成,但它可能更容易这样做:headerLine.Split(new [] { ':' }, 2).Select(p => p.Trim());

现在,这些独立的部分也可以使用正则表达式,但是这将是比简单的几个Split对方难以很多。