📜  c# regex 获取匹配的字符串 - C# (1)

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

C# Regex 获取匹配的字符串

在 C# 中,可以使用正则表达式(Regex)来匹配一个字符串。正则表达式可以用于验证输入的格式、从一个文本中提取数据等等。在本篇文章中,我们将讨论如何使用 C# Regex 获取匹配的字符串。

1. 使用 Regex.Match 方法

要使用 Regex.Match 方法,首先需要使用正则表达式来定义要查找的模式,然后将其传递给 Match 方法。Match 方法将返回一个 Match 对象,该对象包含匹配的信息。下面是一个示例:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "Hello World";
        string pattern = "Hello";

        Match match = Regex.Match(input, pattern);

        if (match.Success)
        {
            Console.WriteLine("Match found: {0}", match.Value); // 输出 Match found: Hello
        }
        else
        {
            Console.WriteLine("Match not found");
        }
    }
}

在上面的示例中,我们使用 Regex.Match 方法来查找字符串中的 "Hello" 子串。如果找到了匹配项,我们将输出 "Match found: Hello"。

2. 使用 Regex.Matches 方法

除了使用 Match 方法查找单个匹配项之外,还可以使用 Matches 方法查找多个匹配项。Matches 方法返回一个 MatchCollection 对象,该对象包含所有匹配项的信息。下面是一个示例:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "Hello World, Hello Universe";
        string pattern = "Hello";

        MatchCollection matches = Regex.Matches(input, pattern);

        if (matches.Count > 0)
        {
            Console.WriteLine("Matches found: ");
            foreach (Match match in matches)
            {
                Console.WriteLine(match.Value); // 输出 Matches found: Hello, Hello
            }
        }
        else
        {
            Console.WriteLine("Match not found");
        }
    }
}

在上面的示例中,我们使用 Regex.Matches 方法查找字符串中的所有 "Hello" 子串。由于字符串中包含两个 "Hello",因此我们将输出 "Matches found: Hello, Hello"。

3. 使用正则表达式的分组

有时,我们还需要使用正则表达式的分组来查找特定部分的匹配项。可以使用 Match.Groups 属性获取分组中捕获的文本。下面是一个示例:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "Name: John, Age: 30";
        string pattern = @"Name: (\w+), Age: (\d+)";

        Match match = Regex.Match(input, pattern);

        if (match.Success)
        {
            Console.WriteLine("Name: {0}", match.Groups[1].Value); // 输出 Name: John
            Console.WriteLine("Age: {0}", match.Groups[2].Value); // 输出 Age: 30
        }
        else
        {
            Console.WriteLine("Match not found");
        }
    }
}

在上面的示例中,我们使用分组来查找字符串中的姓名和年龄。我们使用正则表达式 "Name: (\w+), Age: (\d+)" 来匹配字符串。第一个括号中的 (\w+) 表示一个或多个字母数字字符构成的单词,第二个括号中的 (\d+) 表示一个或多个数字。Regex.Match 方法返回一个 Match 对象,其中包含两个分组。我们使用 match.Groups[1].Value 和 match.Groups[2].Value 分别获取这两个分组中的文本。

结论

C# Regex 是一个强大的工具,可用于查找和操作字符串。我们可以使用 Regex.Match 方法和 Regex.Matches 方法来查找字符串中的匹配项,并使用正则表达式的分组来访问特定信息。了解这些技巧将使我们能够更加灵活地使用正则表达式来解决各种问题。