BỘ giáo dục và ĐÀo tạo trưỜng đẠi học hà NỘi báo cáo tổng kếT ĐỀ TÀi khoa học và CÔng nghệ CẤp cơ SỞ


Regex, ứng dụng và cách sử dụng đơn giản



tải về 230.31 Kb.
trang5/7
Chuyển đổi dữ liệu12.09.2017
Kích230.31 Kb.
1   2   3   4   5   6   7

Regex, ứng dụng và cách sử dụng đơn giản

  1. Regex là gì


Regular Expression (thường được gọi là Regex) có nghĩa là “Biểu thức chính quy” dùng để mô tả một mẫu chuỗi được sắp xếp theo một quy luật nhất định nào đó, ví dụ số điện thoại, địa chỉ email…
      1. Ứng dụng của Regex


  • Regex được sử dụng trong việc xử lý chuỗi như: tìm kiếm, thay thế, bóc tách dữ liệu…;

  • Regex được sử dụng nhiều trong việc kiểm tra tính hợp lệ đầu vào của dữ liệu, ví dụ: địa chỉ email có hợp lệ hay không? có đúng định dạng ngày tháng hay không?…
      1. Các lớp ký tự trong Regex


  • [xyz]: Tìm một ký tự bất kỳ nằm trong tập ký tự giữa cặp dấu ngoặc vuông;

  • [a-z]: Tìm một ký tự bất kỳ nằm trong tập ký tự từ a đến z;

  • [^xyz]: Tìm một ký tự bất kỳ không thuộc tập ký tự giữa cặp dấu ngoặc vuông;

  • . (chấm): Tìm bất kỳ một ký tự nào không phải là ký tự xuống dòng mới hoặc ký tự kết thúc dòng;

  • \w: Tìm một ký tự dạng a-Z, 0-9 và dấu gạch dưới;

  • \W: Ngược lại với \w;

  • \d: Tìm một ký tự thuộc tập ký tự từ 0 đến 9;

  • \D: Tìm một ký tự không nằm trong tập ký tự từ 0 đến 9;

  • \s: Tìm ký tự khoảng trắng (dấu cách);

  • \S: Tìm một ký tự không phải là dấu cách.
      1. Phép lặp trong Regex


Regex cho phép tìm kiếm lặp bên trong biểu thức như sau:

  • {x}: Lặp một ký tự hoặc một biểu thức con trước đó x lần;

  • {x,y}: Lặp một ký tự hoặc một biểu thức con trước đó từ x đến y lần;

  • {x,}: Lặp một ký tự hoặc một biểu thức con trước đó >= x lần;

  • ?: Lặp một ký tự hoặc một biểu thức con trước đó 0 hoặc 1 lần;

  • *: Lặp một ký tự hoặc một biểu thức con trước đó >=0 lần;

  • +: Lặp một ký tự hoặc một biểu thức con trước đó >=1 lần.
      1. Gộp nhóm các biểu thức


Chúng ta có thể sử dụng các dấu ngoặc tròn () để gộp nhóm như trong các biểu thức toán học thông thường.

  • (): Tìm kiếm một nhóm các ký tự bên trong cặp dấu ngoặc và lưu vào chuỗi kết quả;

  • (?: ): Tìm kiếm chuỗi kết quả không chứa tập ký tự nằm trong cặp dấu ngoặc;

  • |: Phép toán hoặc, được sử dụng để kết hợp các mệnh đề với nhau vào chung một biểu thức.
      1. Một số ví dụ minh họa


        Ví dụ

        Kết quả

        Chú giải

        string chuoi = "Mot, Hai, Ba, Bon, NEVERLAND.";

        //tạo pattern xem chuỗi đầu vào có chứa khoảng trắng hay dấu phẩy

        string pattern = " |, ";

        Regex myRegex = new Regex(pattern);

        string[] sKetQua = myRegex.Split(chuoi);

        foreach (string subString in sKetQua)

        {

        Console.WriteLine(subString);

        }

        Mot

        Hai

        Ba

        Bon

        NEVERLAND.

        Ví dụ về tách chuỗi nhập vào thành các từ

        string chuoi = "123abcd456bdabc";

        string pattern = "abc";

        Regex myRegex = new Regex(pattern);

        Match m = myRegex.Match(chuoi);

        if (m.Success)

        {

        Console.WriteLine("Tim thay chuoi con {0} o vi tri thu {1} trong chuoi", m.Value, m.Index);

        }

        else

        Console.WriteLine("Khong tim thay");

        Tim thay chuoi con abc o vi tri thu 3 trong chuoi

        Ví dụ về sử dụng phương thức Match của lớp Regex, kết quả trả về 1 đối tượng kiểu Match để có thể tìm ra vị trí khớp đầu tiên trên chuỗi nhập.

        static void Main(string[] args)

        {

        //tập hợp chứa những so khớp

        MatchCollection mc;

        //1 chuỗi thử nghiệm

        string chuoi = "This is a example string.";

        //luật:cho tìm ra bất cứ những ký tự không phải ký tự khoảng trắng

        //rồi theo sau nó là kí tự khoảng trắng

        string pattern = @"\S+\s";

        //khởi tạo 1 đối tượng của Regex

        //truyền chuỗi pattern vào constructor

        Regex myRegex = new Regex(pattern);

        //tìm ra matches và chỉ mục của từng match

        mc = myRegex.Matches(chuoi);

        for (int i = 0; i < mc.Count; i++)

        {

        Console.WriteLine("The match[{0}]: '{1}' co chieu dai la {2}", i,mc[i].Value, mc[i].Length);

        The match[0]: 'This ' co chieu dai la 5

        The match[1]: 'is ' co chieu dai la 3

        The match[2]: 'a ' co chieu dai la 2

        The match[3]: 'example ' co chieu dai la 8

        Chuỗi \S đi tìm những ký tự không phải khoảng trắng, và dấu + cho biết một hoặc nhiều ký tự ở đằng sau. Còn \s cho biết là khoảng trắng. Do đó, gộp lại ta có mệnh đề “hãy đi tìm bất cứ ký tự non-whitespace theo sau bởi whitespace”.

        function getTextBetweenTags($string, $tagname)

        {

        $pattern = "/<$tagname>(.*?)/";

        preg_match($pattern, $string, $matches);

        return $matches[1];

        }




        Lấy nội dung nằm giữa thẻ html nào đó. Ví dụ $string=’
        Công nghệ Thông tin
        ’, $tagname=’
        ’ sẽ trả lại kết quả là ‘Công nghệ Thông tin’



1   2   3   4   5   6   7


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2019
được sử dụng cho việc quản lý

    Quê hương