Sử dụng biểu thức chính quy

C#:
Sử dụng biểu thức chính quy

Làm thế nào:

Hãy xem xét việc khớp, thay thế, và tách chuỗi sử dụng regex trong C#.

Khớp Số Điện Thoại:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b";
        string text = "Call me on 123-456-7890 or 987.654.3210.";
        MatchCollection matches = Regex.Matches(text, pattern);

        foreach (Match match in matches)
           Console.WriteLine(match.Value);
    }
}

Kết quả:

123-456-7890
987.654.3210

Thay Thế Dòng Mới:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string text = "Dòng đầu tiên.\nDòng thứ hai.\nDòng thứ ba.";
        string pattern = @"\n";
        string replacement = " ";

        string result = Regex.Replace(text, pattern, replacement);
        Console.WriteLine(result);
    }
}

Kết quả:

Dòng đầu tiên. Dòng thứ hai. Dòng thứ ba.

Tách CSV:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string text = "một,hai,ba,bốn";
        string pattern = @",";

        string[] substrings = Regex.Split(text, pattern);
        foreach (string match in substrings)
        {
            Console.WriteLine(match);
        }
    }
}

Kết quả:

một
hai
ba
bốn

Tìm hiểu sâu

Regex đã có từ những năm 1950, nhờ nhà toán học Stephen Kleene. Các phương pháp thay thế cho regex bao gồm các phương thức chuỗi như Contains, IndexOf, StartsWith, vv., nhưng chúng kém mạnh mẽ hơn cho các mẫu phức tạp.

Nói về triển khai, lớp Regex của C# nằm trong System.Text.RegularExpressions. Nó sử dụng các thuật toán backtracking cho việc khớp mẫu. Các thao tác Regex có thể tốn kém; sử dụng một cách cẩn thận để tránh ảnh hưởng đến hiệu suất.

Xem thêm