[英]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.