0

嗨,我有如下字符串:

** Dealing Flop ** [ As, 4s, 8h ]
** Dealing Turn ** [ 4h ]
** Dealing River ** [ 3s ]

我需要知道是翻牌圈还是河牌圈,以及发了什么牌。现在我有

new Regex(@"^\*\* Dealing (?<flop>F)|(?<turn>T)|(?<river>R)");

我需要的应该是

new Regex(@"^\*\* Dealing (?<flop>F)|(?<turn>T)|(?<river>R)*[(?<cards>)]$");

但它不起作用。请帮忙。谢谢。

4

3 回答 3

0

当然,通过使用这将更具可读性.Contains()

enum Situation {
 Flop, 
 Turn,
 River
}

Situation GetSituation(string input){
 if(input.Contains("Flop"){ return Situation.Flop;}
 if(input.Contains("Turn"){ return Situation.Turn;}
 if(input.Contains("River"){ return Situation.River;}
 throw new ArgumentException("Invalid situation");
}

你可以得到这样的牌:

var start = myString.IndexOf("[");
var end = myString.IndexOf("]");
var hands = myString.SubString(start, (end - start)).Split(",");
于 2013-10-10T22:00:32.960 回答
0

您可以使用此模式来了解情况和牌:

\b(?<ftr>Flop|Turn|River) \*\* \[ (?<c1>[^], ]+)(?>, (?<c2>[^], ]+))?(?>, (?<c3>[^] ]+))? ]
于 2013-10-10T22:12:07.817 回答
0

如果你想检查字符串中是否有 Dealing Flop/River 或 Turn 你可以使用这个正则表达式

(.*Dealing Flop| Dealing Turn| Dealing River.*)

然后您可以从字符串中提取您需要的所有数据。但真诚地我更喜欢@JeroenVannevel 方法,因为它更清晰易懂

于 2013-10-10T22:04:18.557 回答