在正则表达式中查找文本行中的数字和双精度

本文关键字:数字 双精度 文本 正则表达式 查找 | 更新日期: 2023-09-27 18:04:29

我需要在文本行字段中找到数字/double并返回其值。文本行可以像这样:"asdajkj asdkj 10.1 asdasd"所以我想从这条直线得到10.1的值。

在正则表达式中查找文本行中的数字和双精度

试试这个:-

string yourString = "asdajkj asdk asdkj 10.1 asdasd";
var resultString = Regex.Match(yourString, @"-?'d+('.?'d+)?").Value;

: -

string yourString = "asdajkj asdk asdkj 10.1 asdasd";
string firstOccurance = Regex.Match(yourString, @"-?'d+('.?'d+)?").Value;
Console.WriteLine(firstOccurance);
/* Multiple Occurance */
string yourString_2 = "asdajkj 10 asdk 23.26 asdkj 10.1 asdasd 15 ";
MatchCollection results = Regex.Matches(yourString_2, @"-?'d+('.?'d+)?");
foreach (Match item in results)
{
    Console.WriteLine(item.Value);
}

你不需要Regex来做:

string input = "asdajkj asdk asdkj 10.1 asdasd";
string res = new string(input.SkipWhile(c => !Char.IsDigit(c)).TakeWhile(c => Char.IsDigit(c) || c == '.').ToArray());
Console.WriteLine(res); // 10.1
string input = "sdajkj asdk asdkj 10.1 asdasd";
// Split on one or more non-digit characters.
string[] numbers = Regex.Split(input, @"'D+");

从字符串中获取第一个数字。

Regex.Match(yourString, @"(?<=^'D*)'d+(?:'.'d+)?").Value