liuxu
V2EX  ›  PHP

一个正则表达式写不出来

  •  
  •   liuxu · Feb 22, 2019 · 4003 views
    This topic created in 2654 days ago, the information mentioned may be changed or developed.
    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 replies    2019-02-22 19:26:28 +08:00
    xiangyuecn
        1
    xiangyuecn  
       Feb 22, 2019   ❤️ 1
    邮件头格式还是蛮复杂的,可能跨多行

    To: ([^\r\n]+(?:\r\n\s+[^\r\n]+)*)
    Telegram
        2
    Telegram  
       Feb 22, 2019   ❤️ 1
    注意冒号:

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

    NOTE: Assume `Subject' always present

    see: https://regex101.com/r/l7xxeN/2/
    junkman
        11
    junkman  
       Feb 22, 2019
    Only one addressee case failed :-(
    bzw875
        12
    bzw875  
       Feb 22, 2019
    str = str.split('Cc:')[0];
    str = str.replace('To', '');
    不小心写错了,其实代码可以实现的地方,别用正则表达式,可读性差
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2818 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1080ms · UTC 14:08 · PVG 22:08 · LAX 07:08 · JFK 10:08
    ♥ Do have faith in what you're doing.