簡體   English   中英

C#使用正則表達式解析字符串 - 與字母相鄰的數字

[英]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 - 109m.Groups["X"].Value10m.Groups["Y"].Value

如果您知道{EnemyMove是靜態的(在X之前始終作為文字出現),請將其添加到正則表達式以使其更安全(即@"{EnemyMove\\s+X:(?<X>\\d+)\\s+Y:(?<Y>\\d+)" )。

暫無
暫無

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

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