【问题标题】:Regex to match charset正则表达式匹配字符集
【发布时间】:2012-10-12 11:21:10
【问题描述】:

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

内容类型:文本/纯文本;字符集=ISO-8859-1;格式=流动

charset=US-ASCII;

内容类型:文本/纯文本;字符集=iso-8859-1

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

【问题讨论】:

    标签: regex


    【解决方案1】:

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

    所以,模式变成:

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

    参考文献

    【讨论】:

    • 不错,我早该想到的
    【解决方案2】:

    在此基础上,我发现这涉及更多情况:

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

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      匹配; 或行尾 ($)。

      【讨论】:

      • 如果.*是贪婪的,如果有多个;跟在charset=之后,这将超过匹配
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多