VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C# Cơ Bản

C# là gì? - C# được sử dụng để làm gì? C# - Cài đặt môi trường C# - Cấu trúc chương trình C# - Cấu trúc cơ bản C# - Kiểu dữ liệu C# - Ép kiểu dữ liệu C# - Hằng số (Constant) C# - Toán tử C# - Lệnh if-else C# - Lệnh switch-case C# - Vòng lặp for C# - Vòng lặp while C# - Vòng lặp do-while C# - Nullable C# - Phương thức C# - Lớp (class) và đối tượng (Object) C# - Mảng (array) C# - Chuỗi (string) C# - Struct C# - Enum C# - Interface C# - Namespace C# - Preprocessor Directive C# - Regular Expression C# - Xử lý ngoại lệ C# - File I/O

Các Tính Chất Hướng Đối Tượng C#

C# - Tính đóng gói C# - Tính kế thừa C# - Tính đa hình C# - Nạp chồng toán tử

C# Nâng Cao

C# - Attribute C# - Reflection C# - Property C# - Indexer C# - Delegate C# - Sự kiện (Event) C# - Collection C# - Generic C# - Phương thức nặc danh C# - Unsafe Code C# - Multithreading

Bài tập C#

Bài tập C# có lời giải

Học Lập Trình C/C++

Học lập trình C Học lập trình C++
1 / 3
❮ ❯

Regular Expression trong C#


Namespace trong C#
Xử lý ngoại lệ trong C#

Regex hoặc Regular Expression trong C# là một API để định nghĩa một mẫu để tìm kiếm hoặc thao tác với chuỗi. Nó được sử dụng rộng rãi để xác định ràng buộc trên các chuỗi như xác thực mật khẩu, email, kiểu dữ liệu datetime, ... Trong C#, một pattern gồm một hoặc nhiều hằng ký tự, toán tử, hoặc construct.


Nội dung chính

  • Construct cho định nghĩa Regular Expression trong C#
  • Lớp Regex trong C#
  • Ví dụ sử dụng Regex trong C#
    • Ví dụ sử dụng Regex trong C# - tìm kiếm chuỗi con
    • Ví dụ sử dụng Regex trong C# - Thay thế ký tự
  • Cú pháp Regex trong C#
    • 1. Các lớp ký tự Regex
    • 2. Số lượng ký tự trong Regex
    • 3. Ký tự đặc biệt trong Regex
    • 4. Ký tự logic trong Regex

Construct cho định nghĩa Regular Expression trong C#

Có nhiều loại ký tự, toán tử và construct đa dạng mà giúp bạn định nghĩa Regular Expression trong C#. Bạn theo các link sau để có chi tiết về các construct này.

  • Character escape
  • Lớp Character
  • Anchor
  • Grouping construct
  • Quantifier
  • Backreference construct
  • Alternation construct
  • Substitution
  • Miscellaneous constructs


Lớp Regex trong C#

Lớp Regex trong C# được sử dụng để biểu diễn một Regular Expression. Nó có các phương thức được sử dụng phổ biến sau:

STT Phương thức
1 public bool IsMatch(string input)

Chỉ rằng có hay không Regular Expression đã cho trong Regex constructor này tìm thấy một match trong chuỗi đầu vào đã xác định

2 public bool IsMatch(string input, int startat)

Chỉ rằng có hay không Regular Expression đã cho trong Regex constructor này tìm thấy một match trong chuỗi đầu vào đã xác định, bắt đầu tại vị trí startat đã cho trong chuỗi

3 public static bool IsMatch(string input, string pattern)

Chỉ rằng có hay không Regular Expression đã cho tìm thấy một match trong chuỗi đầu vào đã xác định

4 public MatchCollection Matches(string input)

Tìm kiếm chuỗi đầu vào đã xác định về tất cả sự xuất hiện của một Regular Expression

5 public string Replace(string input, string replacement)

Trong một chuỗi đầu vào đã xác định, thay thế tất cả chuỗi mà so khớp với một Regular Expression pattern với một chuỗi thay thế đã cho

6 public string[] Split(string input)

Chia một chuỗi đầu vào thành một mảng các chuỗi phụ tại vị trí được định nghĩa bởi một Regular Expression pattern đã xác định trong Regex constructor

Để có danh sách đầy đủ các phương thức và thuộc tính, bạn vui lòng đọc tài liệu về C# của Microsoft.


Ví dụ sử dụng Regex trong C#

Ví dụ sử dụng Regex trong C# - tìm kiếm chuỗi con

Ví dụ sau tìm các chuỗi con mà bắt đầu với chữ hoa 'L':


using System;
using System.Text.RegularExpressions;

namespace VietTutsCsharp
{
    class TestRegexCsharp
    {
        private static void showMatch(string text, string expr)
        {
            Console.WriteLine("Expression: " + expr);
            MatchCollection mc = Regex.Matches(text, expr);
            foreach (Match m in mc)
            {
                Console.WriteLine(m);
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa Regular Expression trong C#");
            Console.WriteLine("-----------------------------------------");
            string str = "Lua nep la lua nep lang, Lua len lop lop...";
            Console.WriteLine("Tim cac tu bat dau bang chu cai 'L': ");
            showMatch(str, @"\bL\S*");
            Console.ReadKey();
        }
    }
}

Kết quả:

Vi du minh hoa Regular Expression trong C#
-----------------------------------------
Tim cac tu bat dau bang chu cai 'L':
Expression: \bL\S*
Lua
Lua

Ví dụ sau tìm các chuỗi con với các từ mà bắt đầu với 'l' thường và kết thúc với 'n' thường:


using System;
using System.Text.RegularExpressions;

namespace VietTutsCsharp
{
    class TestRegexCsharp
    {
        private static void showMatch(string text, string expr)
        {
            Console.WriteLine("Expression: " + expr);
            MatchCollection mc = Regex.Matches(text, expr);
            foreach (Match m in mc)
            {
                Console.WriteLine(m);
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa Regular Expression trong C#");
            Console.WriteLine("-----------------------------------------");
            string str = "Lua nep la lua nep lang, Lua len lop lop...";
            Console.WriteLine("Tim cac tu bat dau bang 'l' va ket thuc bang 'n': ");
            showMatch(str, @"\bl\S*n\b");
            Console.ReadKey();
        }
    }
}

Kết quả:

Vi du minh hoa Regular Expression trong C#
-----------------------------------------
Tim cac tu bat dau bang 'l' va ket thuc bang 'n':
Expression: \bl\S*n\b
len

Ví dụ sử dụng Regex trong C# - Thay thế ký tự

Ví dụ sau thay thế các white space:


using System;
using System.Text.RegularExpressions;

namespace VietTutsCsharp
{
    class TestRegexCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa Regular Expression trong C#");
            Console.WriteLine("-----------------------------------------");
            string str1 = "Hello   World   ";
            string pattern = "\\s+";
            string str2 = "-";
            Regex rgx = new Regex(pattern);
            string result = rgx.Replace(str1, str2);
            Console.WriteLine("Chuoi ban dau: {0}", str1);
            Console.WriteLine("Chuoi sau khi da thay the: {0}", result);
            Console.ReadKey();
        }
    }
}

Kết quả:

Vi du minh hoa Regular Expression trong C#
-----------------------------------------
Chuoi ban dau: Hello   World
Chuoi sau khi da thay the: Hello-World-


Cú pháp Regex trong C#

Với các cú pháp và ví dụ sau bạn có thể kiểm tra kết quả bằng cách sử dụng trang web https://regex101.com/

1. Các lớp ký tự Regex

RegexMô tả
[...]trả về một ký tự phù hợp
[abc]a, b, hoặc c
[^abc]Bất kỳ ký tự nào ngoại trừ a, b, hoặc c
[a-zA-Z]a tới z hoặc A tới Z
[0-9]0 tới 9

Ví dụ:


using System;
using System.Text.RegularExpressions;

namespace VietTutsCsharp
{
    class TestRegexCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa Regular Expression trong C#");
            Console.WriteLine("-----------------------------------------");
            Console.WriteLine(Regex.IsMatch("a", "[a-z]"));
            Console.WriteLine(Regex.IsMatch("b", "[a-z]"));
            Console.WriteLine(Regex.IsMatch("c", "[abc]"));
            Console.WriteLine(Regex.IsMatch("abc", "[abc]"));
            Console.WriteLine(Regex.IsMatch("8", "[0-9]"));
            Console.WriteLine(Regex.IsMatch("a", "[0-9]"));
            Console.ReadKey();
        }
    }
}

Kết quả:

Vi du minh hoa Regular Expression trong C#
-----------------------------------------
True
True
True
True
True
False

2. Số lượng ký tự trong Regex

Số lượng trong Regex chỉ định số lượng xảy ra của một ký tự.

RegexMô tảPatternVí dụ
X?X xảy ra một hoặc không lầnhellos?hello, hellos, helloss
X+X xảy ra một hoặc nhiều lầnVersion \w-\w+Version A-b1_1
X*X xảy ra không hoặc nhiều lầnA*B*C*AAACC
X{n}X chỉ xảy ra n lần\d{4}2018, 20189, 201
X{n,}X xảy ra n hoặc nhiều lần\d{4,}2018, 20189, 201
X{y,z}X xảy ra ít nhất y lần nhưng nhỏ hơn z lần\d{2,3}2018, 201

3. Ký tự đặc biệt trong Regex

Bảng sau dây liệt kê một số ký tự đặc biệt trong regex.

RegexMô tả
.Bất kỳ ký tự nào
^Có 2 cách sử dụng.
1. Đánh dấu bắt đầu của một dòng, một chuỗi.
2. Nếuu sử dụng trong dấu [...] thì nó có nghĩa là phủ định.
$Đánh dấu Kết thúc của một dòng
\dBất kỳ chữ số nào, viết tắt của [0-9]
\DBất kỳ ký tự nào không phải chữ số, viết tắt của [^0-9]
\sBất kỳ ký tự trống nào (như dấu cách, tab, xuống dòng, ...), viết tắt của [\t\n\x0B\f\r]
\SBất kỳ ký tự trống nào không phải ký tự trống, viết tắt của [^\s]
\wBất kỳ ký tự chữ nào (chữ cái và chữ số), viết tắt của [a-zA-Z_0-9]
\WBất kỳ ký tự nào không phải chữ cái và chữ số, viết tắt của [^\w]
\bRanh giới của một từ
\BKhông phải ranh giới của một từ

4. Ký tự logic trong Regex

Bảng sau liệt kê một số ký tự logic trong Regex:

Regex Mô tả Pattern Ví dụ
| Hoặc 22|33 33
( … ) Group các ký tự và chụp lại A(nt|pple) Ant, Apple
\1 Nội dung của Group 1 r(\w)g\1x regex
\2 Nội dung của Group 2 (\d\d)\+(\d\d)=\2\+\1 12+65=65+12
(?: … ) Group không được chụp lại, bạn không thể sử dụng \1 A(?:nt|pple) Ant, Apple

Namespace trong C#
Xử lý ngoại lệ trong C#

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Bài tập quản lý sinh viên trong C#Bài tập C# - Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố trong C#Bài tập C# - Tìm số thuận nghịch trong C#Bài tập C# - Tính tổng của các chữ số của môt số nguyên n trong C#Bài tập C# - Phân tích số nguyên n thành tích các số nguyên tố trong C#Bài tập C# - Liệt kê tất cả số nguyên tố có 5 chữ số trong C#Bài tập C# - Liệt kê n số nguyên tố đầu tiên trong C#Bài tập C# - Liệt kê tất cả các số nguyên tố nhỏ hơn n trong C#Bài tập C# - Tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của 2 sốGiải phương trình bậc 2 trong C#Chuyển đổi hệ cơ số trong C#Tính giai thừa trong C#

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml