【发布时间】:2013-09-18 08:07:05
【问题描述】:
我们有一个标记器来标记文本文件。遵循的逻辑很奇怪,但在我们的上下文中是必要的。
一封电子邮件,例如
xyz.zyx@gmail.com
将产生以下标记:
xyz
.
zyx
@
gmail
我想知道如果我们只允许使用这些令牌,我们如何将该字段识别为电子邮件。不允许使用正则表达式。我们只能使用令牌及其周围的令牌来确定该字段是否为电子邮件字段
【问题讨论】:
-
为什么不用正则表达式?可以使用正则表达式在一行中完成。
-
@RafiKamal 因为标记器是一个独立的系统,它将向任何请求的应用程序提供标记流。 Tokenizer 是独立的,因此它不适合在此处添加用于电子邮件识别的正则表达式的结构
-
仅仅从标记的序列你将无法区分“他说xyz。zyx@gmail.com是一个电子邮件地址。” “他说 zilch.xyz.zyx@gmail.com 是一个电子邮件地址。”通过一些启发式方法,您可能可以正确处理大多数情况,但您不可能 100% 正确地做到这一点。
-
思考如何实现正则表达式。它可能还需要将字符串分成标记并检查标记字符串是否遵循给定的模式。所以,现在你得到了令牌,你需要实现模式部分。
-
.com令牌呢?