Thay thế thẻ html regex
Chuỗi ngày lưu vào CSDL rất đa dạng. Rất khó để sử dụng hàm DateTime. TryPude() to auto convert a string to Datetime ngon lành cành đào Show
Tìm kiếm một chuỗi, lưu chuỗi đó lại và lấy chuỗi đã lưu để chèn vào vị trí nào đóHay nói cách khác, ta cần thay một chuỗi bằng một chuỗi khác, trong chuỗi mới đó lại chứa cả chuỗi vừa được thay thế. Như ví dụ dưới đây sẽ cho các bạn thấy. Ta cần tìm ra ClassName, nhưng không được thay thế ClassName đó bằng Class khác mà ta sẽ ghép nó vào 2 vị trí thay vì chỉ có 1 vị trí như hiện tại Vì vậy RegEx có thể giúp gì cho chúng ta trong các trường hợp trên?Biểu thức chính quy sinh ra là để giúp cuộc đời bạn bớt khổ. Hãy tưởng tượng bạn phải nai lưng ra sao chép-dán bao nhiêu mã. Bạn hoàn toàn có thể tải các công cụ về để thay thế giúp bạn. Nhưng bạn cần bao nhiêu công cụ cho đủ đây Thay vào đó, bạn hãy thử học RegEx. Bộ cú pháp này sẽ giúp bạn thao tác với chuỗi như dao chém chuối. Như ta thấy các ví dụ bên trên, tất cả đều là chuỗi 8 ví dụ 9 hoặc chuỗi 0. RegEx là ngôn ngữ giúp xử lý chuỗi rất mạnhRegEx không phải là ngôn ngữ lập trình. Nó chỉ là một 1 dùng để bắt chuỗi. Nhưng nó cực kỳ phổ biến và bất kỳ ngôn ngữ lập trình nào cũng hỗ trợ. Nó có cả phần thưởng ứng dụng và công cụ ăn theoHãy lần lượt xem qua các ví dụ sau đây để học cách sử dụng Biểu thức chính quy nhé! Bắt đầu sử dụng Biểu thức chính quyĐể bắt đầu sử dụng và học cách sử dụng RegEx, mình hay sử dụng trang web https. //regex101. com/. Giao diện như sau Trước hết các bạn hãy đọc qua một trong các quy tắc bắt chuỗi (khớp) đơn giản nhất của RegEx
Đừng lo, hãy xem qua các ví dụ từ rồi bạn sẽ hiểu Ví dụ đơn giảnFind string numberFind dayLiên kết bản trình diễn. https. //regex101. com/r/3dNzjU/1 Find the main dateTrong ví dụ trên thì ta thấy có chuỗi "60/60/2018" cũng được coi là ngày tháng, như thế là không chính xác. Ta hãy viết lại cho chuẩn Liên kết bản trình diễn. https. //regex101. com/r/3dNzjU/2 Cách "tóm lấy" chuỗi cần tìm đã đưa vào GroupCách tạo mã để sử dụng RegEx trong các ngôn ngữ lập trìnhRegEx là bộ cú pháp, tuy nhiên để áp dụng nó vào các ngôn ngữ lập trình lại phải tuân thủ thủ tục theo các thư viện và quy tắc lập trình để truy xuất các Nhóm đã chụp (thu) được. Vui lòng xem các mã tạo ngay sau đây Cách bắt bất kỳ chuỗiLiên kết bản trình diễn. https. //regex101. com/r/3dNzjU/3Lấy một chuỗi nhưng không chứa 1 ký tự đặc biệt nàoVí dụ bạn cần lấy 1 chuỗi dài, nhưng nếu chuỗi đó chứa 1 ký tự đặt biệt nào đó, ví dụ ký tự 212 thì không lấy được dòng đó. Nghĩa là cần loại bỏ 1 ký tự đặc biệt ra khỏi tập kết quả (các trận đấu nhóm) thu đượcRất đơn giản, chúng ta hãy làm như sau để có thể loại bỏ dấu "/" khỏi kết quả thu được. https. //regex101. com/r/ctuQwj/1 Giải thích 1 chút, như mình đã nói bên trên, khi sử dụng 213 thì nó sẽ loại bỏ các kết quả có chứa ký tự a hoặc b ra khỏi tệp đã lấy được. Ở đây bạn cần loại bỏ dấu hiệu 212 nên ta sẽ viết là 215. Và vì chúng ta cần nhân bản nhiều lần các ký tự khác nhau đánh dấu 212 để tìm 1 chuỗi dài liên tiếp, cho đến khi gặp 1 số có 4 chữ số. Do đó, ta sẽ viết thêm đuôi 217 vào để thành 218Bình thường nếu tìm một chuỗi dài liên tiếp, không quan tâm là ký tự hay chữ số, ta hay viết là 219, do đó cách viết 218 thực ra là một biến thể của 219Dấu chấm 25 sẽ bắt được một ký tự bất kỳ ngoại trừ dấu xuống dòng, do đó 219 sẽ chỉ bắt được chuỗi dài vô tận ở cùng 1 dòng (1 dòng). Do đó, nếu bạn muốn bắt được chuỗi nằm ở nhiều dòng cho đến khi gặp một chuỗi cố định nào đó, thì bạn sẽ phải sử dụng đến chiêu sau đâySử dụng 224 để thay thế cho dấu 25 ta sẽ bắt được toàn bộ ký tự bất kỳ bao gồm cả dấu xuống dòng 226. Làm vậy để bắt được 1 chuỗi dài vô tận nằm ở nhiều dòng ta sẽ dùng 227Lấy một chuỗi nhưng không chứa 1 chuỗi đặc biệt nàoBây giờ bạn không chỉ cần loại trừ (bỏ) một ký tự ra khỏi danh sách chuỗi thu được, bạn còn cần loại bỏ Chắc chắn "một chuỗi" thì sao. Do đó, hãy sử dụng cách sau đây Vấn đề này lúc này cần phải sử dụng đến chức năng Nhìn nhận tiêu cực của Regex, cách hoạt động như sau Giả sử mình cần loại trừ (bỏ qua) một chuỗi (chứ không phải 1 ký tự như ví dụ 218 như bên trên nữa) ra khỏi chuỗi đã bắt được. Thì cần dùng cách viết 229 (Chú ý là dấu 230 và 231 là bắt buộc phải viết để đủ cú pháp). Trong đó abc là 1 chuỗi các ký tự liền kề cần loại bỏ. Nếu cần loại bỏ 2 hoặc nhiều chuỗi con thì sao? Vì chuỗi con nằm bên trong chuỗi cha nên chúng ta cần viết thêm 1 dấu chấm 25 ngay phía sau 234 và bọc toàn bộ khối đó lại thành 1 nhóm. Rồi viết thêm 217 bên ngoài để nhân bản các ký tự lên thành 1 chuỗiNhư vậy để viết Regex này ta phải tư duy từ bên trong ra bên ngoài. Và việc viết thêm Bản nhìn tiêu cực kèm theo dấu chấm dạng 236 thật ra vẫn chính là một biến thể của 219 (bắt một chuỗi dài vô tận, nhưng không chứa chuỗi con cần loại bỏ bên trong nó)Liên kết bản trình diễn. https. //regex101. com/r/SThqo2/2 Bắt đầu 1 chuỗi bất kỳ nằm ở nhiều dòng (multiline)Biểu thức RegEx. 238Sẽ bắt toàn bộ chuỗi nhiều dòng sau đây 1Giải thích tại sao lại bị bắt. Rất đơn giản, là vì 26 sẽ lấy các ký tự được đặt dấu cách, còn 27 sẽ lấy các ký tự được đặt bất kỳ ngoại trừ dấu cách (và 27 sẽ bắt được dấu xuống dòng 242). Nếu kết hợp 2 ký tự đó ghép vào một khung hình 224 tức thì sẽ lấy được 1 trong 2 trường hợp. Sẽ bắt toàn bộ các ký tự bất kỳ bao gồm cả dấu cách nếu gặp. Viết 244 thật ra là nhân bản ký tự cần bắt lên nhiều lần để tìm chuỗi dài vô tậnBình thường nếu tìm một chuỗi dài liên tiếp, không quan tâm là ký tự hay chữ số, ta hay viết là 219, do đó cách viết 244 thực ra là một biến thể của 219. Dấu chấm 25 sẽ bắt được một ký tự bất kỳ ngoại trừ dấu xuống dòng, do đó 219 sẽ chỉ bắt được chuỗi dài vô tận ở cùng 1 dòng (1 dòng). Do đó, nếu bạn muốn bắt được chuỗi nằm ở nhiều dòng cho đến khi gặp một chuỗi cố định nào đó, thì bạn sẽ phải sử dụng đến chiêu sau đây. Sử dụng 224 để thay thế cho dấu 25 ta sẽ bắt được toàn bộ ký tự bất kỳ bao gồm cả dấu xuống dòng 226. Làm vậy để bắt được 1 chuỗi dài vô tận nằm ở nhiều dòng ta sẽ dùng 227Các bạn có thể xem link demo. https. //regex101. com/r/irhKCk/1 Sử dụng RegEx trong thực tếTrong thực tế, RegEx có thể được nhập trực tiếp vào bất kỳ trình chỉnh sửa nào. Ví dụ mình hay sử dụng Notepad++, hoặc Visual Studio Thêm thật nhiều ví dụ để bạn tham khảo (để xem sức mạnh của RegEx)Kiểm tra chuỗi ngày bất kỳ có hợp lệ hay không tính theo năm nhuậnBiểu thức RegEx 2Sẽ đúng cho 08Và sẽ không trùng lặp với 09Kiểm tra 1 chuỗi ngày tháng phải có cả ngày và giờBiểu thức RegEx
Sẽ đúng cho
Và sẽ không trùng lặp với 2Kiểm tra 1 chuỗi bất kỳ xem có phải ngày hoặc giờ hay khôngBiểu thức RegEx 2Sẽ đúng cho 2Và sẽ không trùng lặp với 2Tóm lại
Tham khảo thêm toàn bộ cú pháp RegEx bằng tiếng Anh tại. https. //www. gian lận. com/davechild/cheat-sheets/regular-expressions/
Bạn vui tay muốn thử học RegEx ngay và luôn cho nóng. Do đó, hãy thử thực hiện một số bài tập từ dễ đến khó sau đây nhé. Entry file class
Bài tập dành cho học sinh giỏi (lớp học thêm)
20
21
22
23
Nếu các bài tập trên đây vẫn chưa đủ, các bạn hãy làm thêm các bài tập tại trang https. //regexone. com nhé, rất nhiều ví dụ hay Kết bàiHi vọng bài viết nhỏ này đã giúp bạn học được cú pháp viết RegEx và áp dụng vào công việc thường ngày. Mình dùng Regex rất nhiều và nó là trợ thủ đắc lực trong quá trình code Các bạn thì sao? Cảm ơn các bạn đã đọc, hãy bình luận, upvote và chia sẻ bạn bè thật nhiều nhé Cập nhật v2. 2. Thêm các bài tập để các bạn luyện tập thêm (theo yêu cầu của nhiều bạn, nhớ tự làm trước khi dò đáp án nhé ^^. )BTU1. Tìm ra các chuỗi là số điện thoại trong chuỗi sau. Chú ý một số loại chuỗi không phải là số điện thoại 24Lời giải https. //regexr. com/38pvb BTU2. Chuỗi tìm kiếm là địa chỉ email trong chuỗi sau, chú ý loại bỏ các chuỗi k phải địa chỉ emai thực sự 25Lời giải. https. //regexr. com/3bcrb BTU3. Tìm cách lấy ra và ngăn cách chuỗi số sau thành phần có phần trăm ước lượng 26Lời giải. biểu thức chính quy. com/4409r BTU4. Lấy ra các chuỗi ngăn cách bởi dấu hiệu theo định dạng của một tệp CSV như sau (chú ý là chuỗi bị xuống dòng) 27Lời giải. https. //regexr. com/3apuc BTU5. Tìm và xóa đi toàn bộ thẻ HTML trong đoạn văn bản dưới đây 28Lời giải. https. //regexr. com/3cak1 BTU6. Tìm cách loại bỏ các bảng điều khiển chuỗi. log() do lập trình viên viết để kiểm tra mã trước khi bàn giao 29Lời giải. https. //regexr. com/3fi66 BTU7. Loại bỏ toàn bộ đoạn mã nhận xét trong đoạn mã sau đây 080Lời giải. https. //regexr. com/3aeb7 BTU8. Lấy ra các chuỗi là các URL đầy đủ trong đoạn văn bản dưới đây 081Lời giải. https. //regexr. com/39nr7 BTU9. Lấy toàn bộ URL của video Youtube từ đoạn text test sau đây 082Lời giải. https. //regexr. com/3akf5 BTU10. Lấy đoạn văn bản làm giá trị màu RGB 083Lời giải. https. //regexr. com/38lmo Biểu thức chính quy (RegExp) Mẹo Thủ thuật Quy ước mã JavaScript Mã Visual Studio thay thế Mã sạch |