用于获取字符串一部分的正则表达式模式
本文关键字:正则表达式 模式 一部分 获取 字符串 用于 | 更新日期: 2023-09-27 18:34:54
嗨,我有这样的字符串:
** 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>)]$");
但它不起作用。请帮忙。谢谢。
当然,
通过使用.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(",");
如果你想检查字符串中是否有处理浮点/河流或转弯,你可以使用这个正则表达式
(.*Dealing Flop| Dealing Turn| Dealing River.*)
然后,您可以从字符串中提取所需的所有数据。但真诚地,我更喜欢@JeroenVannevel方法,因为它更清晰,更容易理解
您可以使用此模式来了解情况和卡片:
'b(?<ftr>Flop|Turn|River) '*'* '[ (?<c1>[^], ]+)(?>, (?<c2>[^], ]+))?(?>, (?<c3>[^] ]+))? ]