代码之家  ›  专栏  ›  技术社区  ›  WJA

如何剥离一切后的模式“在x约翰写道:”在一个字符串

  •  0
  • WJA  · 技术社区  · 5 年前

    我有一个大字符串(来自阅读电子邮件)。现在,当用户回复时,典型的回复如下所示:

    "On x x x wrote:"
    

    我想去掉这个模式后面的所有文本。然而,我不知道如何识别这种模式。

    abc = abc.split('From:', 1)[0]
    

    On wrote: ?

    样品:

    \r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n
    
    4 回复  |  直到 5 年前
        1
  •  3
  •   Zulfiqaar    5 年前

    re.match(r"\r\nOn.+wrote:", email)[0]
    

    ^
    On
    .+ 是任何事物的一个或多个实例
    wrote:

    这个 [0] 最后我们会从邮件中得到第一个匹配项 这个 email.strip()

    例子:

    import re
    
    email =  '\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n'
    extracted = re.match(r"On.+wrote:", email.replace('\r', '').replace('\n', ''))[0]
    print(extracted)
    
    Out[163]: 'On Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:' 
    

    正则表达式的另一种替代方法是找到单词“On”第一次出现的索引和单词“writed”的索引,并将整个文本分为以下两部分:

    extracted = email[email.find('On'):email[email.find('On'):].find('wrote:')+8]
    
        2
  •  1
  •   SanderGeek    5 年前

    abc.拆分(“on.*写道:”)[1]

    https://regexr.com

        3
  •  0
  •   Antonio Gamiz Delgado    5 年前

    你可以使用正则表达式,然后当你有精确的匹配可以分裂它。 可以使用/On/regex/From:/,其中regex是用于检测“x”的正则表达式。

    更多信息可在文档中找到: enter link description here

        4
  •  0
  •   techdoodle    5 年前

    可以使用以下正则表达式来查找模式:

     /(?:On\ x\ x\ x\ wrote\:)/