正则表达式匹配charset

时间:2010-06-16 11:12:32

标签: regex

我一直在尝试使用正则表达式匹配mime多部分电子邮件的字符集,以便我可以正确解码它们。但是我发现格式存在一些差异,因为我不是专家,因此我似乎找不到正则表达式。 目前我正在使用(?<=charset=).*(?=;)但是我通过发送来自不同客户的电子邮件找到的示例是:

  

Content-Type:text / plain;字符集= ISO-8859-1;格式=流动

     

字符集= US-ASCII;

     

Content-Type:text / plain;字符集= ISO-8859-1

所以我的正则表达式适用于前两个但不是最后一个,但如果我删除(?=;),那么我也会匹配format=flowed部分,这是我不想要的。

3 个答案:

答案 0 :(得分:5)

您可以使用.*而不是[^;]*。也就是说,匹配除;之外的任何内容。

因此,模式变为:

(?<=charset=)[^;]*

参考

答案 1 :(得分:1)

在此基础上,我发现这会引发更多情况:

(?<=charset=)(([^;,\r\n]))*

希望有所帮助。

答案 2 :(得分:0)

匹配;或行尾($)。