4

我想编写一个 Rails 应用程序来帮助我进行在线扑克。我在 PokerStars 打牌,每手牌都有可用的文本数据。它的格式是这样的:

PokerStars 游戏 #27457662450:锦标赛 #157033867,免费扑克无限注 - 级别 IV (50/100) - 2009/04/24 20:39:44 ET
表 '157033867 830' 9-max 座位 #1 是按钮
座位 1:DortheaV(筹码 7624)
座位 2:Currly234(筹码 3016)
座位 3:paolilla(筹码 3086)
座位 4: triumph888(筹码 1571)坐在外面
座位 5:Minchausti(筹码 1185)坐在外面
座位 6:madmike11847(筹码 1195)坐在外面
座位 7:alamodey(筹码 4038)
座位 8:whiskerbob(筹码 3365)
座位 9:SHpic76(筹码 1115)坐在外面
DortheaV: 下注 10
Currly234:发布赌注 10
paolilla: 发布 ante 10
triumph888: 发布 ante 10
Minchausti:张贴赌注 10
madmike11847: 发布赌注 10
alamodey: 发布 ante 10
胡须鲍勃:张贴赌注 10
SHpic76:张贴赌注 10
Currly234:发布小盲注 50
paolilla: 发布大盲注 100
*** 洞牌 ***
交易给 alamodey [8s Ks]
triumph888:折叠
Minchausti:褶皱
madmike11847:折叠
阿拉莫迪:拨打 100
胡须:褶皱
SHpic76:折叠
DortheaV:褶皱
Currly234:呼叫 50
保利拉:检查
*** 翻牌圈*** [5c 4h 6d]
Currly234:检查
保利拉:检查
阿拉莫迪:赌注 234
Currly234:折叠
paolilla:褶皱
未跟注 (234) 返回到 alamodey
alamodey 从锅中收集了 390
alamodey: 不显示手
*** 概括 ***
总底池390 | 耙 0
板 [5c 4h 6d]
座位 1:DortheaV(按钮)在翻牌前弃牌(没有下注)
座位 2: Currly234(小盲注)在翻牌圈弃牌
座位 3:paolilla(大盲注)在翻牌圈弃牌
座位 4: triumph888 在翻牌前弃牌(没有下注)
座位 5:Minchausti 在翻牌前弃牌(没有下注)
座位 6:madmike11847 在翻牌前弃牌(没有下注)
座位 7:收集了 alamodey (390)
座位 8:在翻牌前弃牌(没有下注)
座位 9:SHpic76 在翻牌前弃牌(没有下注)

是否有任何用于 Ruby 的解析库,或者我必须手动和 hackily 执行此操作?

4

4 回答 4

2

这听起来像是 Regex 的工作!我怀疑使用任何库是否会使解析变得更容易,因为它是一种非常自定义的格式,您只需要破解它即可。

于 2009-04-25T00:57:21.710 回答
2

您可能想查看Treetop,这是一个基于Parsing Expression Grammar的 Ruby 解析器生成器。

于 2009-04-25T00:59:50.800 回答
1

此外,如果您只想要数据,您应该查看PokerTracker。PokerTracker 存储了 100% 的手牌信息,并拥有完善的架构和开放的 PostgreSQL 数据库。

于 2009-04-25T06:31:05.073 回答
1

Ragel非常擅长写解析器。例如 Mongrel 的 http 解析器是用 ragel 生成的。

于 2009-04-25T01:21:16.927 回答