本课程建立在高尔夫技巧之上
你将学到
价格与金额 邮箱与话题标签 日志与状态码 日期 综合运用
步骤 · 12
- 01走进实地讲解
- 02读收据狩猎
- 03抓取邮箱狩猎
- 04校验用户名狩猎
- 05筛查日志狩猎
- 06找出话题标签狩猎
- 07匹配 24 小时制时间狩猎
- 08读更新日志狩猎
- 09校验十六进制颜色狩猎
- 10轮到你了狩猎
- 11实地高尔夫狩猎
- 12实地演练完成讲解
真实文本中的正则:日志、收据和邮件
真实文本很杂乱。收据里混着商品名、价格和日期;服务器日志把时间戳、级别和消息塞进一行;邮件里有邮件头、引用和签名。在真实文本上用正则,就是要在这些杂音里找出你需要的片段,而不是检查一个干净的值。
这正是各项基础汇合的地方。字符类挑选字符,量词决定数量,锚点或 \b 固定匹配的起止位置,带 | 的分组列出人们实际会写出的各种变体。在这个课程里,你要在真实片段中高亮价格、邮箱和日期,顺带校验几种格式。
用看起来像你自己数据的文本来练习。复制几行真实数据,把难搞的那几行也放进去,既要看正则点亮了什么,也要看它漏掉了什么。在三行整齐数据上管用的正则,常常在第四行就失手。
示例
抓住
- ERROR disk full
- WARN slow query
放过
- INFO user saw ERROR
- WARNING: low disk
^让级别必须位于行首,\b防止WARNING被当成WARN。抓住
- Order ORD-20481
- ref ORD-1234 paid
放过
- ORD-12
- WORD-5000
\b把WORD-5000挡在外面,{4,}要求至少四位数字。抓住
- save 15%
- VAT 7.5%
- tax 7,5%
放过
- 15 percent
- page 2
可选的分组让一个正则就能读出
15%、7.5%和欧洲写法7,5%。抓住
- Re: invoice
- FWD: menu
- fw: slides
放过
- Review: draft
- Invoice re: May
i标志涵盖Re、RE和re,^则忽略出现在邮件主题中间的re:。
常见错误
- 在更长的内容里误匹配。
\d{4}能找到年份,但也会找到电话号码或订单号里的四位数字;加上\b或周围的文本来固定它。 - 让 `. *
失控。它是贪婪的,所以在含有两对括号的行上,\(.*\)会从第一个(一直抓到最后一个);用[^)]*` 这样的字符类就能停在第一个。 - 只测试整齐的行。 真实数据里有多余的空格、混杂的大小写和缺失的字段,所以也要用难看的行来测试,并决定哪些行要放过。
反复操练:真实格式 →
延伸阅读:实战校验 →
延伸阅读:邮箱正则:可直接复制、真正好用的写法 →