/ / Regex для захоплення числового поля - c #, regex

Regex для захоплення числового поля - c #, regex

Я шукаю регулярний вираз, де я можу отримати частину рядка, що відповідає критеріям.

пошук рядка "Довжина 32,00 мм".

Я хотів би отримати "32,00". В основному перше числове значення перед "мм". таким чином, це може зробити так:

string test = "The length is 32.00 mm";

int idx = test.IndexOf(" mm ") - 1;
int endIdx = idx;
while (idx > 0)
{
Char c = test.ElementAt(idx);
if (Char.IsDigit(c) == false && c != ".")
{
string data = test.Substring(idx + 1, endIdx - idx + 1);
break;
}
idx--;
}

У вас є краща логіка?

Я можу розділити рядок на пробіл і забрати запис перед слотом "мм".

Дякую,

Відповіді:

2 для відповіді № 1

Ну, ви можете використовувати регулярний вираз з позитивним lookahead

s[d.]+(?=s+mm)

Подобається це

string test = "The length is 32.00 mm";
Console.WriteLine(Regex.Match(test, @"s[d.]+(?=s+mm)").Value);

DEMO