Поплавки используются для хранения более широкого диапазона чисел, чем может быть помещено в целое число. К ним относятся десятичные числа и номера стилей научной нотации, которые могут быть более значительными, чем могут соответствовать 32 битам. Вот глубокое погружение в них: http://en.wikipedia.org/wiki/Floating_point
Реальный базовый пример с регулярным выражением:
var pattern = new Regex("([^ ]+) \"([^\"]+)\" \\(([^)]+)\\)");
var match = pattern.Match("command \"string\" (0, 1, 2)");
var command = match.Groups[1];
var text = match.Groups[2];
var location = match.Groups[3];
Console.WriteLine(command);
Console.WriteLine(text);
Console.WriteLine(location);
В этом примере предполагается, что у вас всегда будет одинаковое количество параметров одного типа, и он не обрабатывает, включая кавычки в строке , но это дает вам представление о том, как вы могли бы реализовать это с помощью регулярного выражения.
Объяснение регулярного выражения
(?<command>[^ ]+) The first sequence of characters up to a space
( (?<parameter>...))* Zero or more parameters, separated by a space
Выражение группы захвата parameter
является одним из следующих:
(?<boolean>true|false) A boolean literal
(?<integer>[+-]?[0-9][0-9]*) An integer literal
(?<float>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?) A floating point literal
(?<string>\"[^\"]+\") A string literal
(?<vector>\\([^)]+\\)) A vector literal
Так как вам удалось Чтобы добавить свои собственные выражения для целых чисел и чисел с плавающей точкой, я предполагаю, что вы понимаете, как каждое из отдельных регулярных выражений соответствует их соответствующим частям. Это просто выглядит немного устрашающе, когда вы объединяете все эти выражения вместе с символом канала между ними.