从短信正文中提取账号和余额哪种方式更好



我正在计划一项任务,从用户android手机收件箱中读取所有与银行相关的短信,并从中提取他们的账号和余额。我猜这可以通过两种方式完成,如

  1. 使用RegEx从SMS正文中提取数据,如此处所述链接。这当然具有对任何银行余额消息进行通用表示的优势
  2. 在数据库中存储每个银行的模板消息,并将其与读取的SMS进行比较以提取数据

我想知道哪条路径是有效的,或者有其他方法吗?

这两种方法具有不同的特性:

  • 选项1可能会导致许多不同的复杂正则表达式。独自一人瞥了一眼你联系的答案,我的头都转了。意思是:从开发人员的角度来看,维护这样一个正则表达式列表不是一件容易的事
  • 然而,对于选项2,你当然必须跟踪你的"模板"集合,但是:一旦你的基础设施到位,你唯一需要做的工作就是:添加新模板;或者调整它们

因此,从"开发"的角度来看,我倾向于选择2——因为这样的"模板"更容易管理。为了处理这样的模板,您甚至不需要对Java语言有太多的了解。它们只是文本;包含一些定义的关键字。甚至可以考虑告诉用户如何自己定义模板!他们知道他们银行的短信是什么样子的;所以你可以考虑一些"导入"机制,你的应用程序提取短信文本,然后用户告诉应用程序(一次)相关部分可以在那里找到!

关于运行时效率:我不会依赖于人们在这里进行猜测。相反:用真实世界的数据做实验;看看将短信文本与一组更大的复杂正则表达式进行匹配是否比将它们与更简单的"模板"进行匹配更便宜或更昂贵。

  1. 存储每个银行的模板需要更多的内存(如果您在启动时加载它们以提高效率)和文件系统存储,而且正如您所说,需要事先了解每个银行模板并正确设置用户应用程序也有缺点
  2. 使用regex不会占用文件系统存储空间,也不会占用更多内存,但它可能会为看起来像银行消息的内容创建误报,但事实并非如此。然而,有一种便利,不需要了解所有的银行就可以正确地做到这一点

最新更新