gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:25 25 4
gpt4 key购买 nike

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

预期输出 -910

提前致谢。

最佳答案

如果要将数字限制在 0-10 范围内,请替换 \d+10|\d :

X:(?<X>10|\d)\s+Y:(?<Y>10|\d)

参见 demo

因此,您需要删除定界符(前导/尾随 / )并添加 Y部分。

集团X将包含 X 之后的数字和集团Y将包含 Y 之后的数字.

enter image description here

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

如果你知道{EnemyMove是静态的(在 X 之前总是以文字形式出现),将其添加到正则表达式以使其更安全(即 @"{EnemyMove\s+X:(?<X>\d+)\s+Y:(?<Y>\d+)" )。

关于C# 使用正则表达式解析字符串 - 数字与字母相邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com