簡體   English   中英

正則表達式模式,用於獲取字符串的一部分

[英]Regex pattern for getting part of a string

嗨,我有類似的字符串:

** 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()可以.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 / River或Turn,則可以使用此正則表達式

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

然后,您可以從字符串中提取所需的所有數據。 但是,真誠地,我更喜歡@JeroenVannevel方法,因為它更清晰易懂

您可以使用此模式來了解情況和卡片:

\b(?<ftr>Flop|Turn|River) \*\* \[ (?<c1>[^], ]+)(?>, (?<c2>[^], ]+))?(?>, (?<c3>[^] ]+))? ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM