嗨我有类似的字符串:
** 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>)]$");
但它不起作用。 请帮忙。谢谢。
答案 0 :(得分: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(",");
答案 1 :(得分:0)
如果你想检查字符串中是否有Dealing Flop / River或Turn你可以使用这个正则表达式
(.*Dealing Flop| Dealing Turn| Dealing River.*)
然后您可以从字符串中提取所需的所有数据。 但是真诚地我更喜欢@JeroenVannevel方法,因为它更清晰,更简单地理解
答案 2 :(得分:0)
您可以使用此模式了解情况和卡片:
\b(?<ftr>Flop|Turn|River) \*\* \[ (?<c1>[^], ]+)(?>, (?<c2>[^], ]+))?(?>, (?<c3>[^] ]+))? ]