我认为用正则表达式解析IRC 消息会很好。我做到了这一点:
(?::(?<Prefix>[^ ]+) +)?(?<Command>[^ :]+)(?<middle>(?: +[^ :]+)*)(?<coda> +:(?<trailing>.*)?)?
然后我将它与以下 .NET 代码一起使用来获取消息的显着元素:
Prefix = matches.Groups["Prefix"].Value;
Command = matches.Groups["Command"].Value;
var parameters = new List<string>();
parameters.AddRange(matches.Groups["middle"].Value
.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries));
parameters.Add(matches.Groups["trailing"].Value);
Parameters = parameters.ToArray();
但我不喜欢我必须在代码中单独拆分它。有没有办法可以从middle
组中获取一组匹配项?