我需要在C#中使用regex在两个字符串之间获取一个字符串

本文关键字:字符串 两个 之间 获取 一个 regex | 更新日期: 2023-09-27 18:29:01

我有一个字符串,例如:"GamerTag":"A Talented Boy","GamerTileUrl",我一直在尝试但未能得到的是值:A Talented Boy。我需要帮助创建一个正则表达式字符串来获得A Talented Boy。有人能帮帮我吗!

我需要在C#中使用regex在两个字符串之间获取一个字符串

var str = "'"GamerTag'":'"A Talented Boy'",'"GamerTileUrl'"";
var colonParts = str.Split(':');
if (colonParts.Length >= 2) {
    var commaParts = colonParts[1].Split(',');
    var aTalentedBoy = commaParts[0];
    var gamerTileUrl = commaParts[1];
}

这也允许您获取逗号分隔列表的其他部分。

假设s是您的字符串(此处不检查):

s = s.Split(':')[1].Split(',')[0].Trim('"');

如果你想有一个Regex解决方案,这里是:

s = "'"GamerTag'":'"A Talented Boy'",'"GamerTileUrl'"";
Regex reg = new Regex("(?<=:'").+?(?='")");
s = reg.Match(s).Value;

您可以使用字符串方法:

string result = text.Split(':').Last().Split(',').First().Trim('"');

当缺少分隔符时,First/Last扩展方法可防止出现异常。

演示

我认为可以安全地假设您的字符串实际上比您向我们展示的要大,并且它包含多个键/值对?我认为这将做你正在寻找的:

str.Split("GamerTag:'"")[1].Split("'"")[1];

第一个分割以"GamerTag:"为目标,并在之后获取所有。第二个分割获取"GamerTag:"

之后该区块中存在的第一个和第二个"之间的所有内容

这个怎么样?

':'"([^'"]+)'"

这将匹配分号和开头的引号,并匹配任何非引号字符,直到下一个引号。