regex - 提取特定文本块并将其放入新文档中
问题描述
我正在使用 EmEditor,我看到有一个支持 Regex 语句的“查找并提取到新文档”功能。我正在尝试从 Thunderbird 邮箱文本文件中提取一些特定的文本。邮箱里有客服聊天记录的副本。不幸的是,因为我们使用这个聊天程序的免费版本,它不允许导出数据。电子邮件正文中有很多文本,包括聊天和解码的附件。但在每个聊天的底部是姓名、电子邮件、公司名称等。
它看起来像这样:
Name: Tan
Email: someone@domcin.com
Operator: OperatorName
Start Time: 07/01/2014 14:43:47
End Time: 07/01/2014 15:35:22
Product/Service: Delivery
Phone: 123 1234567
Company: MyCompany Inc.
我尝试提取姓名、电子邮件、运营商、产品、电话和公司。更糟糕的是,并不是所有人都有陪伴,因为也有私人。此外,电话有时会有 +60 或 (60) 或空格,因为聊天用户可以输入我们想要的内容。我可以手动执行此操作,但它有 6k 个条目。
问题是是否会有一个正则表达式语句来找到它们。然后我可以使用 EmEditor 找到这个块并将结果放入一个新文档中,并进行一些调整,我应该能够制作一个 excel 文件以导入到 CRM 中。
如果这不适用于正则表达式,那么没有人知道这样做的聪明方法,所以我不必复制和粘贴所有这些?
解决方案
您可以使用以下正则表达式来实现您的结果:
^(?:Name|Email|Operator|Start Time|End Time|Product\/Service|Phone|(?:Company?)).*$
上述正则表达式的解释:
^
- 表示给定测试字符串的开始。
(?:Name|Email|Operator|Start Time|End Time|Product\/Service|Phone|(?:Company?))
- 表示包含任何一个给定字段的非捕获组。通知字段Company
可能在比赛中出现 0 次或 1 次。
|
- 代表交替。
.*
- 这会贪婪地匹配除换行符之外的任何内容。
$
- 表示给定测试字符串的结尾。
您可以在此处找到上述正则表达式的演示。
推荐阅读
- reactjs - 如何从antd中的数据动态创建列?
- php - 如何在 laravel eloquent 控制器上正确应用 foreach 以进行表格转置
- algorithm - 从总和的乘积中找到乘积的总和(多项式)
- php - 即使我成功登录,为什么 Auth::check() 返回 false?
- google-sheets - 如何仅从字符串中提取最后两行文本?
- android - 在 Spek 2 中提供应用程序上下文
- ffmpeg - 当我想从 jpg 文件生成 mp4 文件时,如何在 FFMPEG 中使用 GPU 加速?
- sql - 如何在pyspark数据框中按时间范围过滤行
- c - 输出窗口未在 Dev-c++ 中打开
- c++ - QT Creator 中的 PyObject