📜  c# regex 在字符串中查找数字 - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.910000             🧑  作者: Mango

C# regex 在字符串中查找数字

正则表达式(regex)是一种强大的文本匹配工具,它可以帮助我们在字符串中查找特定的文本。在 C# 中,我们可以使用正则表达式来查找数字。

查找整数

以下是一个示例代码片段,它使用正则表达式在字符串中查找整数:

string input = "Hello 123 World456";
string pattern = @"\d+";
MatchCollection matches = Regex.Matches(input, pattern);

foreach (Match match in matches)
{
    int number = int.Parse(match.Value);
    Console.WriteLine(number);
}

在上面的代码中,我们使用 \d+ 的正则表达式来查找数字。这个正则表达式匹配一个或多个数字,我们将其存储在 MatchCollection 中。然后,我们遍历每个匹配项,并将其转换为整数。

如果在字符串中找不到整数,则上面的代码将不会产生任何输出。

查找小数

如果我们需要查找小数,则可以使用以下正则表达式:

string input = "3.14, 1.23, 42";
string pattern = @"\d+\.\d+";
MatchCollection matches = Regex.Matches(input, pattern);

foreach (Match match in matches)
{
    double number = double.Parse(match.Value);
    Console.WriteLine(number);
}

在上面的代码中,我们使用 \d+\.\d+ 的正则表达式来查找小数。这个正则表达式匹配一个或多个数字,后跟一个小数点,接着是另一个或多个数字。我们将每个匹配项转换为双精度浮点数并输出。

查找科学计数法表示的数字

如果我们需要查找科学计数法表示的数字,则可以使用以下正则表达式:

string input = "3.14e2, 1.23e-1, 42";
string pattern = @"[-+]?\d+(\.\d+)?([eE][-+]?\d+)?";
MatchCollection matches = Regex.Matches(input, pattern);

foreach (Match match in matches)
{
    double number = double.Parse(match.Value);
    Console.WriteLine(number);
}

在上面的代码中,我们使用 [-+]?\d+(\.\d+)?([eE][-+]?\d+)? 的正则表达式来查找科学计数法表示的数字。这个正则表达式匹配可选的正负号,接着是一个或多个数字,后跟一个可选的小数部分和一个可选的指数部分。我们将每个匹配项转换为双精度浮点数并输出。

总结

在本文中,我们介绍了如何使用正则表达式在字符串中查找数字。我们可以使用 \d+ 来查找整数,\d+\.\d+ 来查找小数,以及 [-+]?\d+(\.\d+)?([eE][-+]?\d+)? 来查找科学计数法表示的数字。