C#使用正则表达式解析字符串 - 与字母相邻的数字

时间:2015-10-28 20:17:28

标签: c# regex

我在编写正确的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

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果您想将数字限制在0-10范围内,请将zoom: 1;替换为\d+

10|\d

请参阅demo

因此,您需要删除分隔符(前导/尾随X:(?<X>10|\d)\s+Y:(?<Y>10|\d) )并添加/部分。

小组Y将包含X之后的数字,而小组X将包含Y之后的数字。

enter image description here

C# demo

Y

输出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"].Value10

如果您知道m.Groups["Y"].Value是静态的(在{EnemyMove之前始终作为文字出现),请将其添加到正则表达式以使其更安全(即X)。