如何提取电子邮件地址
有时,您可能从网站或业务软件中导出了数据
其中包含订单信息或客户详细信息。
而您可能只需要其中的电子邮件地址和订单日期。
一种方法是将所有数据导入 Excel,删除不需要的列
,然后导出剩余的数据。
This may not work well if the email field also contains the email address description,
for example: “Dave Martin <davemartin@bogusemail.com>”.
如果你必须重复执行这项任务多次
或者必须向别人解释所有步骤,那可能会很麻烦。
使用“正则表达式”提取所需数据
正则表达式(简称“regex”或“regexp”),
是一串字符,用于指定文本中的匹配模式。
一个非常简单的例子是在文本编辑器中查找一个有两种不同拼写方式的单词,
正则表达式 seriali[sz]e 同时匹配“serialise”和“serialize”。
更复杂的情况是文本中用于标识的语法
-
电子邮箱地址:
[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+
来源: Stack Overflow - 使用正则表达式从字符串中提取电子邮件地址 -
日期:
\d{4}-\d{2}-\d{1,2}
来源: Stack Overflow - 从字符串中提取日期的正则表达式
正则表达式(Regex)教程
推荐的 YouTube 视频
“这38分钟花得值,绝对值得”:
如何匹配任意格式的文本
(从第25分钟开始讲解提取电子邮件地址的语法)
RegExr 在线工具
在 Notepad++ 或 Atom 等高级文本编辑器中,通常支持正则表达式
。
此外,还有一些免费的在线工具可供使用,其中之一是:
https://regexr.com——一个用于学习、构建和测试正则表达式的在线服务。
Web 界面说明:
“表达式”字段用于输入正则表达式。
“文本”字段用于输入待分析的内容。
点击“工具 > 列表”可查看提取结果。
示例 1:仅提取电子邮件地址
表达:
[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+
文本:
戴夫·马丁
615-555-7164
罗德岛州斯普林菲尔德市主街173号,邮编55924
davemartin@bogusemail.com
查尔斯·哈里斯
800-555-5669
弗吉尼亚州亚特兰蒂斯市海街969号,邮编34075
charlesharris@bogusemail.com
埃里克·威廉姆斯
560-555-5153
阿拉斯加州法克镇第一街806号,邮编86847
laurawilliams@bogusemail.com工具 > 列表:
$&\n
结果:
davemartin@bogusemail.com
charlesharris@bogusemail.com
laurawilliams@bogusemail.com示例 2:提取电子邮件地址和日期
表达:
","(.*?)([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)(.*?)",".*",(\d{2}\.\d{2}\.\d{4})
文本:
"lorem ipsum dolor sit amet","Robert Farrell <rmfarrell@bogusemail.com>","",02.01.2024, ,5379,
"consectetur adipiscing elit","""Mesa, Rene <rmesa@bogusemail.com>""","",04.01.2024, ,20826,
"sed do eiusmod tempor incididunt","Antonio Bugan <antonio@bogusemail.com>","",04.01.2024, ,2856,
"ut labore et dolore magna aliqua","Crawley Down Tennis Club <hello@bogusemail.com>","",05.01.2024, ,4453,工具 > 列表:
$2,$4\n
结果:
rmfarrell@bogusemail.com,02.01.2024
rmesa@bogusemail.com,04.01.2024
antonio@bogusemail.com,04.01.2024
hello@bogusemail.com,05.01.2024正则表达式速查表
. - Any Character Except New Line
\d - Digit (0-9)
\D - Not a Digit (0-9)
\w - Word Character (a-z, A-Z, 0-9, _)
\W - Not a Word Character
\s - Whitespace (space, tab, newline)
\S - Not Whitespace (space, tab, newline)
\b - Word Boundary
\B - Not a Word Boundary
^ - Beginning of a String
$ - End of a String
[] - Matches Characters in brackets
[^ ] - Matches Characters NOT in brackets
| - Either Or
( ) - Group
Quantifiers:
* - 0 or More
+ - 1 or More
? - 0 or One
{3} - Exact Number
{3,4} - Range of Numbers (Minimum, Maximum)来源:GitHub 代码片段