【问题标题】:regex to help strip plaintext chat log?正则表达式帮助去除纯文本聊天记录?
【发布时间】:2016-11-26 09:59:53
【问题描述】:

所以,我有一个从 Microsoft Lync 导出的消息的纯文本文件。基本上,我获取了源代码并剥离了 HTML。它看起来像这样:

Smith, Joe [10:48AM]:
Hey guys!
How's it going?
Smith, Jane [10:49AM]:
Hey!
Doe, John [10:50AM]:
Wassup!
Where are we going out today?

如您所见,它们都是相互对立的,但更重要的是,一些用户消息是多行的。

我想要做的是创建一个正则表达式来协助记事本++ 宏,该宏将通过并删除除特定用户的消息之外的所有内容,不包括他们的姓名和时间戳。

因此,对于我上面的示例,如果我的用户是 John Doe,我想要的结果将如下所示:

Wassup!
Where are we going out today?

我正在寻找一个基本上将针对除 John Doe 之外的所有用户的正则表达式,因此我可以检查并删除除他之外的所有消息(之后我可以删除他的姓名和时间戳)。问题是,因为有些消息是多行的,我需要某种方式来说“选择这个用户,以及他们的所有消息行,直到下一个用户”。也许使用 Javascript 或其他东西会更容易,但我觉得它也应该以这种方式工作。

【问题讨论】:

    标签: javascript regex notepad++ corpus


    【解决方案1】:

    定位除 John Doe 以外的所有用户:

    (?sm)^(?!Doe, John)[^\r\n]+:$\R(.*?(?=\R[^\r\n[]+\[.*:|\Z))
    

    Live demo

    【讨论】:

      【解决方案2】:

      使用记事本++,只需多次替换:

      ^.*\[.*[AP]M\]:\r\n(?:[\w\W]*?SURNAME, NAME \[.*[AP]M\]:((?:(?!.*\[.*[AP]M\]).*)*)|(?![\w\W]*\[.*[AP]M\]:)[\w\W]*)
      

      $1,用你需要的替换SURNAMENAME

      你必须使用these settings

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        相关资源
        最近更新 更多