我的字符串就像
COMMAND =“HELP ME”TIMEOUT_SECONDS =“30”APP_ID =“SOMETHING RANDOM”COUNT =“100”RETVAL =“0”STDOUT =“DATA I NEED”STDERR =“NO ERROR”STATUS =“SUCCESS”
我希望能够提取STDOUT
,STDERR
和STATUS
。我该怎么办?
答案 0 :(得分:1)
你可以试试这个正则表达式:
(?<=(?:STDOUT|STDERR|STATUS)\=")([^"]+)
因此,您将获得3个结果。
MatchCollection mcol = Regex.Matches(strInput, @“(?<=(?:STDOUT|STDERR|STATUS)\=")([^"]+)”);
foreach(Match m in mcol)
{
System.Diagnostic.Debug.Print(m.ToString());
}
此外:
using System.Text.RegularExpressions;
在这里,正则表达式的这一部分:
(?:STDOUT|STDERR|STATUS)
您还可以指定需要其值的密钥(除了提到的3之外)。
答案 1 :(得分:0)
string input2 = @"COMMAND=""HELP ME"" TIMEOUT_SECONDS=""30"" APP_ID=""SOMETHING RANDOM"" COUNT=""100"" RETVAL=""0"" STDOUT=""DATA I NEED"" STDERR=""NO ERROR"" STATUS=""SUCCESS""";
var dict = Regex.Matches(input2, @"(.+?)=""(.+?)""").Cast<Match>()
.ToDictionary(m => m.Groups[1].Value.Trim(),
m => m.Groups[2].Value.Trim());
Console.WriteLine(dict["STDOUT"]);
Console.WriteLine(dict["STATUS"]);
答案 2 :(得分:0)
使用以下功能:
public static Dictionary<string,string> GetValues(string command)
{
Dictionary<string,string> output = new Dictionary<string,string>();
string[] splitCommand = command.Split(" ");
foreach(var item in splitCommand)
{
output.Add(item.Split("=")[0] , item.Split("=")[1]);
}
return output;
}
如果要获取值,请使用
之类的函数Dictionary<string,string> output = YourClass.GetValue(command);
string stdout = output["STDOUT"];
string etderr= output["ETDERR"];
string status = output["STATUS"];
我无法访问编译器。所以,可能会有错误。但整体功能看起来像这样。