【发布时间】:2014-12-24 14:32:52
【问题描述】:
我正在使用 PHP,需要解析如下所示的字符串:
Rake (100) Pot (1000) Players (andy: 10, bob: 20, cindy: 70)
我需要知道每个玩家的抽水、底池和抽水贡献。玩家的数量是可变的。顺序无关紧要,只要我能匹配玩家姓名以一致的方式获得贡献。
例如,我希望得到这样的东西:
Array
(
[0] => Rake (100) Pot (1000) Players (andy: 10, bob: 20, cindy: 70)
[1] => 100
[2] => 1000
[3] => andy
[4] => 10
[5] => bob
[6] => 20
[7] => cindy
[8] => 70
)
我能够想出一个匹配字符串的正则表达式,但它只返回最后一个玩家-耙子贡献对
^Rake \(([0-9]+)\) Pot \(([0-9]+)\) Players \((?:([a-z]*): ([0-9]*)(?:, )?)*\)$
输出:
Array
(
[0] => Rake (100) Pot (1000) Players (andy: 10, bob: 20, cindy: 70)
[1] => 100
[2] => 1000
[3] => cindy
[4] => 70
)
我尝试过使用 preg_match_all 和 g 修饰符,但没有成功。我知道 preg_match_all 能够得到我想要的,如果我只想要玩家-抽水贡献对,但在此之前我还需要数据。
显然我可以自己使用explode和解析数据,但在走这条路之前,我需要知道是否/如何使用纯正则表达式来完成。
【问题讨论】:
-
你的预期输出是什么?
-
接下来会发生什么“例如,我希望得到这样的东西:”
-
它不适用于
preg_match_all或g,因为重复()*捕获组只会按预期保存最后一次出现的cindy70 -
@nu11p01n73R 这些只是我考虑过的想法——那我该怎么做呢?
-
为什么要获得
a?