[英]C# parse string using regex - number adjacent to letter
我在編寫正確的REGEX並在C#中解析字符串時遇到了麻煩。 我得到輸入的字符串是:
{EnemyMove X:7 Y:8}
我需要數字跟隨X和跟隨Y的數字,范圍是0-10。 嘗試下面的代碼,但正則表達式不正確,我得到一個不正確的結果。
我需要運行它兩次,一次得到X附近的數字,第二次得到Y后的數字。
string str = "{EnemyMove X:9 Y:10}";
var regex_sp_chrs = new Regex("/X:.*?(\d+)/");
regex_sp_chrs.Matches(str );
預期產出 - 9 10
提前致謝。
如果要將數字限制為0-10范圍,請將\\d+
替換為10|\\d
:
X:(?<X>10|\d)\s+Y:(?<Y>10|\d)
見演示
因此,您需要刪除分隔符(前導/尾隨/
)並添加Y
部分。
集團X
后,將包含數字X
和集團Y
會后包含數字Y
。
C#demo :
var str = "{EnemyMove X:9 Y:10}";
var regex_sp_chrs = new Regex(@"X:(?<X>10|\d)\s+Y:(?<Y>10|\d)");
var ms = regex_sp_chrs.Matches(str);
foreach (Match m in ms)
Console.WriteLine(string.Format("{0} - {1}",
m.Groups["X"].Value,
m.Groups["Y"].Value));
它會輸出9 - 10
, 9
是m.Groups["X"].Value
和10
是m.Groups["Y"].Value
。
如果您知道{EnemyMove
是靜態的(在X
之前始終作為文字出現),請將其添加到正則表達式以使其更安全(即@"{EnemyMove\\s+X:(?<X>\\d+)\\s+Y:(?<Y>\\d+)"
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.