c# – 在字符串中解析这个字符串的最佳方法是什么?

我有以下字符串:

 string fullString = "group = '2843360' and (team in ('TEAM1', 'TEAM2','TEAM3'))"

我想解析出这个字符串

 string group = ParseoutGroup(fullString);  // Expect "2843360"
 string[] teams = ParseoutTeamNames(fullString); // Expect array with three items

就完整字符串的示例而言,我可以列出一个或多个团队(并不总是如上所述的三个).

我有这个部分工作,但我的代码感觉非常hacky并不是非常未来证明,所以我想看看这里是否有更好的正则表达式解决方案或更优雅的方式从这个完整的字符串解析这些值?之后可能会在字符串中添加其他内容,因此我希望这样做尽可能万无一失.

最佳答案
我设法使用regular expressions

var str = "group = '2843360' and (team in ('TEAM1', 'TEAM2','TEAM3'))";

// Grabs the group ID
var group = Regex.Match(str, @"group = '(?<ID>\d+)'", RegexOptions.IgnoreCase)
    .Groups["ID"].Value;

// Grabs everything inside teams parentheses
var teams = Regex.Match(str, @"team in \((?<Teams>(\s*'[^']+'\s*,?)+)\)", RegexOptions.IgnoreCase)
    .Groups["Teams"].Value;

// Trim and remove single quotes
var teamsArray = teams.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(s =>
        {
            var trimmed = s.Trim();
            return trimmed.Substring(1, trimmed.Length - 2);
        }).ToArray();

结果将是:

string[] { "TEAM1", "TEAM2", "TEAM3" }

转载注明原文:c# – 在字符串中解析这个字符串的最佳方法是什么? - 代码日志