Ngày regex python yyyy-mm-dd

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

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

^[?=\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ạnh

RegEx 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 theo

Hã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

  • 31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
    
    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 9
  • 31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
    
    5 So sánh và trùng khớp với
    31/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 9
  • 31/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ấu
    ^[?=\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 [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
  • 31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
    
    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 đc
  • 31/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ần
  • 31/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ưng
    31/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ặc
    31/12/2003 11:59:59 PM | 29-2-2004 | 01:45:02
    
    29
  • 31/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ề nhau
  • 31/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 nhau
  • 31/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 n

Chủ Đề