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
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
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
^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
8 ví dụ ^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
9 hoặc chuỗi 31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
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
31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
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
2 Tìm và so sánh tất cả các ký tự nằm trong dấu ngoặc và trùng khớp với 1 ký tự trong dấu ngoặc. Ví dụ.31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
3 sẽ trùng khớp với 3 hoặc 1,31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
4 sẽ trùng khớp với bất kỳ ký tự nào trong khoảng từ 0 đến 931/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
5 So sánh và trùng khớp với31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
6 ký tự nằm trong khoảng chỉ định. Ví dụ.31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
5 sẽ khớp với một ký tự trong khoảng từ a đến z nằm trong chuỗi cần kiểm tra.31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
8 sẽ khớp với bất kỳ ký tự nào trong khoảng từ 0 đến 931/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
9 So sánh và không trùng khớp với các ký tự nằm trong khoảng chỉ định. Dấu31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
20 [dấu đóng] nằm trong dấu ngoặc nhọn là dấu phủ định. Ví dụ.^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
21 sẽ không trùng khớp với tất cả các ký tự nằm trong khoảng từ a đến z^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
20 Khớp với phần đầu của chuỗi đích. Ví dụ.^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
23 sẽ trùng khớp với chữ a trong chuỗi abc,^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
24 sẽ trùng khớp với chữ đầu tiên – chữ "the" của chuỗi "The quick brown fox jumps over the lazy dog"^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
25 Khớp với phần cuối của chuỗi đích. Ví dụ.^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
26 sẽ trùng khớp với chữ c trong chuỗi abc,^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
27 sẽ trùng khớp với chữ cuối – chữ "dog" của chuỗi "The quick brown fox jumps over the lazy dog"^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
28 Trùng khớp với 1 hoặc nhiều lần ký tự đứng trước nó. Ví dụ^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
29 sẽ chỉ trùng với chuỗi có từ 1 con số trở lên^[?=\d][?:[?:31[?!.[?:0?[2469]|11]]|[?:30|29][?!.0?2]|29[?=.0?2.[?:[?:[?:1[6-9]|[2-9]\d]?[?:0[48]|[2468][048]|[13579][26]]|[?:[?:16|[2468][048]|[3579][26]]00]]][?:\x20|$]]|[?:2[0-8]|1\d|0?[1-9]]][[-./]][?:1[012]|0?[1-9]]\1[?:1[6-9]|[2-9]\d]?\d\d[?:[?=\x20\d]\x20|$]]?[[[0?[1-9]|1[012]][:[0-5]\d]{0,2}[\x20[AP]M]]|[[01]\d|2[0-3]][:[0-5]\d]{1,2}]?$
20 Trùng khớp với 0 hoặc nhiều ký tự đứng trước nó. Ví dụ31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
21 sẽ trùng với chuỗi có chứa 1 chữ số hoặc k có chữ số nào cũng đc31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
22 Trùng khớp với 0 hoặc 1 lần các ký tự đứng trước nó. Tương tự như31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
20 nhưng nó lại chỉ nhân lên 1 lần.31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
20 thì nhân lên nhiều lần31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
25 Trùng khớp với 1 ký tự đơn bất kỳ ngoại trừ ký tự ngắt dòng [ngắt dòng] và cũng không lấy được ký tự có dấu [unicode]. Ví dụ.31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
25 sẽ khớp với ký tự a hoặc b hoặc c trong chuỗi abc. Nhưng31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
25 sẽ không bắt được các chữ31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
28 hoặc31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
2931/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
20 Trùng khớp đúng với n lần ký tự đứng trước nó. n is an number of sound. Ví dụ31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
21 sẽ bắt được các số có 2 chữ số liền kề nhau31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
22 Trùng khớp với ít nhất n lần ký tự đứng trước nó. n is an number of sound. Ví dụ31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
23 sẽ bắt được các số có từ 2 chữ số trở lên đứng liền nhau31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
24 Trùng khớp với ít nhất n lần và nhiều nhất là m lần ký tự đứng trước nó. n and m is a number of sound and n31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02