1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình phân tích ứng dụng quy trình tạo chuỗi dùng phương thức Peek qua lớp regex p5

5 11 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 488,47 KB

Nội dung

Tham khảo tài liệu ''giáo trình phân tích ứng dụng quy trình tạo chuỗi dùng phương thức peek qua lớp regex p5'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Ngơn Ngữ Lập Trình C# // tạo chuỗi biểu thức quy tắc Regex theRegex = new Regex(“ |, ”); StringBuilder sBuilder = new StringBuilder(); int id = 1; // sử dụng vòng lặp để lấy chuỗi foreach ( string subString in theRegex.Split(s1)) { // nối chuỗi vừa tìm biểu thức quy tắc // vào chuỗi StringBuilder theo định dạng sẵn sBuilder.AppendFormat(“{0}: {1} \n”, id++, subString); } Console.WriteLine(“{0}”, sBuilder); }// end Main }// end class }// end namespace  Kết quả: 1: Mot 2: hai 3: ba 4: Trung 5: Tam 6: Dao 7: Tao 8: CNTT Ví dụ minh họa bắt đầu việc tạo chuỗi s1, nội dung chuỗi tương tự chuỗi minh họa 10.4 string s1 = “Mot, hai, ba, Trung Tam Dao Tao CNTT”; Tếp theo biểu thức quy tắc tạo ra, biểu thức dùng để tìm kiếm chuỗi: Regex theRegex = new Regex(“ |, ”); Ở khởi tạo nạp chồng Regex lấy chuỗi biểu thức quy tắc tham số Điều gây khó hiểu Trong ngữ cảnh chương trình C#, biểu thức quy tắc: chuỗi đưa vào khởi dựng đối tượng Regex? Thật chuỗi ký tự truyền vào biểu thức quy tắc theo ý nghĩa truyền thống thuật ngữ Tuy nhiên, theo quan điểm hướng đối tượng ngôn ngữ C#, đối mục hay tham số khởi tạo đơn chuỗi ký tự, Regex đối tượng biểu thức quy tắc! 293 Xử Lý Chuỗi Ngơn Ngữ Lập Trình C# Phần cịn lại chương trình thực giống ví dụ minh họa 10.4 trước Ngoại trừ việc gọi phương thức Split() đối tượng Regex chuỗi s1 Regex.Split() hành động tương tự cách String.Split() Kết trả mảng chuỗi, chuỗi so khớp tìm theo mẫu đưa theRegex Phương thức Regex.Split() phương thức nạp chồng Phiên đơn giản gọi thể Regex dùng ví dụ 10.5 Ngồi cịn có phiên tĩnh phương thức Phiên lấy chuỗi để thực việc tìm kiếm mẫu để so khớp Tiếp sau minh họa 10.6 sử dụng phương thức tĩnh  Ví dụ minh họa 10.6: Sử dụng phương thức tĩnh Regex.Split() namespace Programming_CSharp { using System; using System.Text; using System.Text.RegularExpressions; public class Tester { static void Main() { // tạo chuỗi tìm kiếm string s1 = “Mot, hai, ba Trung Tam Dao Tao CNTT”; StringBuilder sBuilder = new StringBuilder(); int id = 1; // không tạo thể Regex sử dụng phương // thức tĩnh lớp Regex foreach( string subStr in Regex.Split( s1, “ |, ”)) { sBuilder.AppendFormat(“{0}: {1}\n”, id++, subStr); } Console.WriteLine(“{0}”, sBuilder); } } } Kết ví dụ minh họa 10.6 hoàn toàn tương tự minh họa 10.5 Tuy nhiên chương trình khơng tạo thể đối tượng Regex Thay vào sử dụng trực tiếp phương thức tĩnh Regex Split() Phương thức lấy vào hai tham số, Xử Lý Chuỗi 294 Ngơn Ngữ Lập Trình C# tham số chuỗi đích cần thực so khớp tham số thứ hai chuỗi biểu thức quy tắc dùng để so khớp Sử dụng Regex để tìm kiếm tập hợp Hai lớp thêm vào namespace NET cho phép thực việc tìm kiếm chuỗi cách lập lặp lại hết chuỗi, kết trả tập hợp Tập hợp trả có kiểu MatchCollection, bao gồm khơng có hay nhiều đối tượng Match Hai thuộc tính quan trọng đối tượng Match chiều dài giá trị nó, chúng đọc ví dụ minh họa 10.7  Ví dụ minh họa 10.7: Sử dụng MatchCollection Match namespace Programming_CSharp { using System; using System.Text.RegularExpressions; class Tester { static void Main() { string string1 = “Ngon ngu lap trinh C Sharp”; // tìm chuỗi khơng có khoảng trắng // bên kết thúc khoảng trắng Regex theReg = new Regex(@”(\S+)\s”); // tạo tập hợp nhận kết so khớp MatchCollection theMatches = theReg.Matches(string1); // lặp để lấy kết từ tập hợp foreach ( Match theMatch in theMatches) { Console.WriteLine(“Chieu dai: {0}”, theMatch.Length); // tồn chuỗi xuất if ( theMatch.Length != 0) { Console.WriteLine(“Chuoi: {0}”, theMatch.ToString()); }// end if }// end foreach }// end Main }// end class }// end namespace 295 Xử Lý Chuỗi Ngơn Ngữ Lập Trình C#  Kết quả: Chieu dai: Chuoi: Ngon Chieu dai: Chuoi: ngu Chieu dai: Chuoi: lap Chieu dai: Chuoi: trinh Chieu dai: Chuoi: C Ví dụ 10.7 bắt đầu việc tạo chuỗi tìm kiếm đơn giản: string string1 = “Ngon ngu lap trinh C Sharp”; biểu thức quy tắc để thực việc tìm kiếm chuỗi string1: Regex theReg = new Regex(@”(\S+)\s”); Chuỗi \S tìm ký tự ký tự trắng dấu cộng có hay nhiều ký tự Chuỗi \s (chữ thường) khoảng trắng Kết hợp lại tìm chuỗi khơng có khoảng trắng bên theo sau khoảng trắng Chúng ta lưu ý khai báo chuỗi biểu thức quy tắc dạng chuỗi nguyên văn để dễ dàng dùng ký tự escape (\) Kết trình bày năm từ tìm thấy Từ cuối khơng tìm thấy khơng theo sau khoảng trắng Nếu chèn khoảng trắng sau chữ “Sharp” trước dấu ngoặc đóng, chương trình tìm thêm chữ “Sharp” Thuộc tính Length chiều dài chuỗi tìm kiếm Chúng ta tìm hiểu sâu thuộc tính phần sử dụng lớp CaptureCollection cuối chương Sử dụng Regex để gom nhóm Đơi lập trình cần gom nhóm số biểu thức tương tự với theo quy định Ví dụ cần tìm kiếm địa IP nhóm chúng lại vào nhóm IPAddresses tìm thấy đâu chuỗi Lớp Group cho phép tạo nhóm tìm kiếm dựa biểu thức quy tắc, thể kết từ nhóm biểu thức đơn Một biểu thức nhóm định rõ nhóm cung cấp biểu thức quy tắc, chuỗi so khớp biểu thức quy tắc thêm vào nhóm Ví dụ, để tạo nhóm viết sau: @”(?(\d|\ )+)\s” 296 Xử Lý Chuỗi Ngơn Ngữ Lập Trình C# Lớp Match dẫn xuất từ nhóm Group, có tập hợp gọi Groups chứa tất nhóm mà Match tìm thấy Việc tạo sử dụng tập hợp Groups lớp Group minh họa ví dụ 10.8 sau:  Ví dụ minh họa 10.8: Sử dụng lớp Group namespace Programming_CSharp { using System; using System.Text.RegularExpressions; class Tester { public static void Main() { string string1 = “10:20:30 127.0.0.0 Dolphin.net”; // nhóm thời gian hay nhiều số hay dấu : // theo sau khoảng trắng Regex theReg = new Regex(@”(?(\d|\:)+)\s” + // địa IP hay nhiều số hay dấu chấm theo // sau khoảng trắng @”(?(\d|\.)+)\s” + // địa web hay nhiều ký tự @”(?\S+)”); // lấy tập hợp chuỗi so khớp MatchCollection theMatches = theReg.Matches( string1 ); // sử dụng vòng lặp để lấy chuỗi tập hợp foreach (Match theMatch in theMatches) { if (theMatch.Length != 0) { Console.WriteLine(“\ntheMatch: {0}”, theMatch.ToString()); // hiển thị thời gian Console.WriteLine(“Time: {0}”, theMatch.Groups[“time”]); // hiển thị địa IP Console.WriteLine(“IP: {0}”, theMatch.Groups[“ip”]); // hiển thị địa web site Console.WriteLine(“Site: {0}”, theMatch.Groups[“site”]); }// end if }// end foreach 297 Xử Lý Chuỗi ... mảng chuỗi, chuỗi so khớp tìm theo mẫu đưa theRegex Phương thức Regex. Split() phương thức nạp chồng Phiên đơn giản gọi thể Regex dùng ví dụ 10.5 Ngồi cịn có phiên tĩnh phương thức Phiên lấy chuỗi. .. nhiên chương trình khơng tạo thể đối tượng Regex Thay vào sử dụng trực tiếp phương thức tĩnh Regex Split() Phương thức lấy vào hai tham số, Xử Lý Chuỗi 294 Ngơn Ngữ Lập Trình C# tham số chuỗi đích... thấy đâu chuỗi Lớp Group cho phép tạo nhóm tìm kiếm dựa biểu thức quy tắc, thể kết từ nhóm biểu thức đơn Một biểu thức nhóm định rõ nhóm cung cấp biểu thức quy tắc, chuỗi so khớp biểu thức quy tắc

Ngày đăng: 08/05/2021, 17:25