首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegExp作为表条目

RegExp作为表条目
EN

Stack Overflow用户
提问于 2011-04-05 22:10:30
回答 4查看 134关注 0票数 3

我正在构建一个通过Twilio从SMS文本获取输入的应用程序。我想构建一个表,将传入的SMS正文与适当的响应进行匹配。

例如,假设我正在构建一个NFL文本消息。

有人用“红人队”发短信,我们回短信说,“红人队在FedEx球场打球”;有人用“小马队”发短信,我们回短信说:“小马队是印第安纳州的骄傲。”

这里是棘手的部分:

当然,我们的Rails应用程序需要通过正则表达式来解释传入的团队名称,因为很多人都会发短信:红皮队、红人队或REDSKIN……

对于一个或两个团队,可以将RegExp和响应硬编码到30个团队的controller...but中,这似乎是错误的。(而且有120个条目--说全是职业体育--甚至更糟)。

有没有人有从输入阶段获取团队名称的技巧,通过中间有'RegExp‘转换的DB表阶段?

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-13 12:40:12

对于数量适中的关键字,我建议使用两个表的方法,关键字和别名,总是以小写存储。将输入转换为小写。对于每个关键字(例如,红皮),您可以在别名中手动添加5-10个变体(包括正确的变体),所有这些变体都具有Alias.keyword_id =该关键字的id。因此,您只需在别名中搜索用户输入,如果找到匹配项,您就拥有关键字的keyword_id。

它有两个优点:快速和易于扩展……我给你记下“没有匹配”,你会得到一个新的别名列表,添加到dbase中一次。与尝试使用正则表达式相比,这要容易得多,也更可靠。

票数 2
EN

Stack Overflow用户

发布于 2011-04-05 22:17:18

我认为您不想在这里使用正则表达式。拼写错误怎么办?为了提供帮助(尤其是来自txt msg),我认为你也应该允许缩写。

也许Soundex-based库或拼写更正是最好的选择。您需要的是最接近的匹配算法,而不是模式匹配算法。

票数 2
EN

Stack Overflow用户

发布于 2011-04-05 22:26:44

如果短信不太长,你应该首先将其切成单词,然后与团队名称列表相交。

代码语言:javascript
复制
array_of_team_names = %w(Redskins Colts ... ) # keep it all capitalized
'cOLts blah blah'.scan(/\w+/).map{|word| word.capitalize} & array_of_team_names
# => ['Colts']

如果你想像drysdam建议的那样处理输入错误,或者如果你想更准确地处理更大的文本,你应该使用一些特定于此的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5553229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档