我一直在尝试使用正则表达式匹配mime多部分电子邮件的字符集,以便我可以正确解码它们。但是我发现格式存在一些差异,因为我不是专家,因此我似乎找不到正则表达式。
目前我正在使用(?<=charset=).*(?=;)
但是我通过发送来自不同客户的电子邮件找到的示例是:
Content-Type:text / plain;字符集= ISO-8859-1;格式=流动
字符集= US-ASCII;
Content-Type:text / plain;字符集= ISO-8859-1
所以我的正则表达式适用于前两个但不是最后一个,但如果我删除(?=;)
,那么我也会匹配format=flowed
部分,这是我不想要的。
答案 0 :(得分:5)
您可以使用.*
而不是[^;]*
。也就是说,匹配除;
之外的任何内容。
因此,模式变为:
(?<=charset=)[^;]*
答案 1 :(得分:1)
在此基础上,我发现这会引发更多情况:
(?<=charset=)(([^;,\r\n]))*
希望有所帮助。
答案 2 :(得分:0)
匹配;
或行尾($
)。