V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuxu
V2EX  ›  PHP

一个正则表达式写不出来

  •  
  •   liuxu · 2019-02-22 18:36:47 +08:00 · 3458 次点击
    这是一个创建于 2131 天前的主题,其中的信息可能已经有所发展或是发生改变。
    To: =?GB2312?B?s8LR9A==?= , =?GB2312?B?0e7V8buq?= , =?GB2312?B?ts69qNOi?= , =?GB2312?B?wO7RxcX0?= , =?GB2312?B?wfXX07vU?= Cc: =?GB2312?B?wfXA2g==?= , =?GB2312?B?wfW7qNHT?= Subject: =?GB2312?B?u9i4tDogu9i4tDogcGPXqNawvNK9zMrTxrVidWc=?=

    如何匹配 To 到 Cc:之间的字符串,Cc:有时候可能不存在,所以不能用 To:( =\?.*\?= )Cc:,想了半天没想出来,求解答,谢谢
    12 条回复    2019-02-22 19:26:28 +08:00
    xiangyuecn
        1
    xiangyuecn  
       2019-02-22 18:51:50 +08:00   ❤️ 1
    邮件头格式还是蛮复杂的,可能跨多行

    To: ([^\r\n]+(?:\r\n\s+[^\r\n]+)*)
    Telegram
        2
    Telegram  
       2019-02-22 18:55:15 +08:00   ❤️ 1
    注意冒号:

    =\?[^:]*\?=
    Telegram
        3
    Telegram  
       2019-02-22 18:57:23 +08:00   ❤️ 1
    从 To:开始,?=结尾,中间不能含有冒号:,问题解决
    laoyur
        4
    laoyur  
       2019-02-22 18:57:27 +08:00   ❤️ 1
    To: (?:\s*=\?.+?\?=\s*,?)+
    xiangyuecn
        5
    xiangyuecn  
       2019-02-22 18:57:44 +08:00
    \r\n 有点问题。。。不研究了
    Raisu
        6
    Raisu  
       2019-02-22 18:58:13 +08:00 via Android
    用 split
    lastpass
        7
    lastpass  
       2019-02-22 19:12:41 +08:00 via Android
    用 antlr
    liuxu
        8
    liuxu  
    OP
       2019-02-22 19:16:57 +08:00
    @laoyur 多谢大佬,试过这个,最后,?一直没想到
    bzw875
        9
    bzw875  
       2019-02-22 19:18:32 +08:00
    str = str.split('fuck:')[0]
    str = str.replace('To', '')
    junkman
        10
    junkman  
       2019-02-22 19:23:22 +08:00   ❤️ 1
    To:( =\?.*\?= )(Cc|Subject):

    NOTE: Assume `Subject' always present

    see: https://regex101.com/r/l7xxeN/2/
    junkman
        11
    junkman  
       2019-02-22 19:25:44 +08:00
    Only one addressee case failed :-(
    bzw875
        12
    bzw875  
       2019-02-22 19:26:28 +08:00
    str = str.split('Cc:')[0];
    str = str.replace('To', '');
    不小心写错了,其实代码可以实现的地方,别用正则表达式,可读性差
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.