Thay thế văn bản giữa hai chuỗi python

Hướng dẫn này dạy chúng ta cách xóa phần văn bản giữa hai phần của chuỗi bằng JavaScript, về cơ bản, chúng ta có hai đầu có thể là một chuỗi hoặc một ký tự và chúng ta phải xóa chuỗi nằm giữa chúng

Trong hướng dẫn này, chúng ta sẽ sử dụng biểu thức chính quy hoặc JavaScript Regex để xóa văn bản giữa hai ký tự. Chúng ta sẽ sử dụng hàm replace() của JavaScript

cú pháp

Hãy xem cú pháp loại bỏ một phần của chuỗi ở giữa hai ký tự hoặc chuỗi con của một chuỗi đã cho bằng JavaScript Regex −

var str; // declaration of the string var final_str = str.replace( / (first_part) .* (second_part)/ , (first_part) + (second_part ));

Trong cú pháp trên, trước tiên chúng tôi đã khai báo một chuỗi mà chúng tôi sẽ thực hiện các thay đổi và final_str sẽ lưu trữ chuỗi sẽ là kết quả cuối cùng của chúng tôi. Chúng ta sẽ sử dụng phương thức replace() của regex JavaScript trong đó chúng ta chuyển biểu thức chính quy − ‘/ (first_part). * (phần thứ hai)/’. Ở đây first_part có thể là một chuỗi hoặc một ký tự

Lưu ý - Ở đây chúng tôi đang cố gắng tìm lần xuất hiện đầu tiên của 'first_part' trong chuỗi đã cho, sau đó chúng tôi sẽ tìm lần xuất hiện cuối cùng của 'second_part' trong chuỗi đã cho. Sau đó, nếu cả 'first_part' và 'second_part' đều có trong chuỗi và có một số ký tự ở giữa chúng, chúng tôi sẽ xóa chúng

thuật toán

Chúng ta đã thấy cú pháp ở trên để loại bỏ một phần của chuỗi giữa hai ký tự, bây giờ chúng ta sẽ xem thuật toán hoàn chỉnh từng bước –

  • Đầu tiên, chúng ta sẽ khai báo chuỗi và gán cho nó một số giá trị

  • Sau đó, chúng tôi sẽ tạo một biến sẽ lưu trữ giá trị của kết quả cuối cùng

  • Chúng tôi sẽ gọi phương thức regex JavaScript để thay thế () và chuyển nó sang biểu thức chính quy, nhưng đây là một vấn đề đó là hàm thay thế () cần hai tham số

  • Chúng tôi sẽ tìm biểu thức chính quy sẽ bao gồm cả chuỗi hoặc ký tự bắt đầu và kết thúc của chúng tôi, điều đó có nghĩa là chúng cũng sẽ thay thế bằng chuỗi ở giữa mà chúng tôi thực sự cần trả về

  • Chúng tôi sẽ chuyển các chuỗi hoặc ký tự đầu tiên và cuối cùng của chúng tôi dưới dạng các chuỗi kết hợp để thay thế biểu thức chính quy đã cho

  • Bằng cách này, chúng ta có thể loại bỏ chuỗi giữa hai phần của chuỗi

Bây giờ, hãy xem các ví dụ dựa trên thuật toán trên -

ví dụ 1

Trong ví dụ này, chúng tôi sẽ lấy hai chuỗi và sẽ xóa chuỗi ở giữa sẽ xuất hiện ở giữa chúng -

Trong ví dụ trên, chúng tôi đã xóa tất cả các ký tự có giữa 'CD' và 'GH'. Ở đây chúng tôi đã thay thế chuỗi từ chỉ số 2 (chỉ số cơ sở 0) thành chỉ số 27 và sau đó thay thế chúng bằng 'CDGH' để có câu trả lời cuối cùng

ví dụ 2

Trong ví dụ này, chúng tôi sẽ thay thế tất cả các ký tự ở giữa hai ký tự và chúng tôi cũng sẽ xóa các ký tự này

Trong ví dụ trên, chúng tôi đã xóa tất cả các ký tự có giữa dấu ngoặc đơn bao gồm cả dấu ngoặc đơn

Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách xóa phần văn bản giữa hai phần của một chuỗi, về cơ bản, chúng ta có hai đầu có thể là một chuỗi hoặc một ký tự và chúng ta đã học cách xóa chuỗi nằm ở giữa chúng. Chúng tôi đã sử dụng biểu thức chính quy hoặc JavaScript Regex để xóa văn bản giữa hai ký tự bằng cách sử dụng hàm thay thế ()

Một nơi mà ngôn ngữ Python thực sự tỏa sáng là thao tác với các chuỗi. Phần này sẽ đề cập đến một số phương thức chuỗi tích hợp sẵn của Python và các thao tác định dạng, trước khi chuyển sang hướng dẫn nhanh về chủ đề cực kỳ hữu ích của biểu thức chính quy. Các mẫu thao tác chuỗi như vậy thường xuất hiện trong ngữ cảnh của công việc khoa học dữ liệu và là một lợi ích lớn của Python trong ngữ cảnh này

Chuỗi trong Python có thể được xác định bằng cách sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép (chúng tương đương về mặt chức năng)

Trong 1]

x = 'a string' y = "a string" x == y

Ra[1]

True

Ngoài ra, có thể xác định các chuỗi nhiều dòng bằng cú pháp trích dẫn ba lần

Trong 2]

multiline = """ one two three """

Với điều này, chúng ta hãy xem nhanh một số công cụ thao tác chuỗi của Python

Thao tác chuỗi đơn giản trong Python

Đối với các thao tác cơ bản đối với chuỗi, các phương thức chuỗi tích hợp sẵn của Python có thể cực kỳ thuận tiện. Nếu bạn có nền tảng làm việc với C hoặc một ngôn ngữ cấp thấp khác, bạn có thể sẽ thấy sự đơn giản trong các phương thức của Python cực kỳ mới mẻ. Chúng tôi đã giới thiệu kiểu chuỗi của Python và một số phương thức này trước đó;

Định dạng chuỗi. trường hợp điều chỉnh

Python làm cho nó khá dễ dàng để điều chỉnh trường hợp của một chuỗi. Ở đây chúng ta sẽ xem xét các phương thức True21, True22, True23, True24 và True25, sử dụng chuỗi lộn xộn sau đây làm ví dụ

Trong 3]

fox = "tHe qUICk bROWn fOx."

Để chuyển đổi toàn bộ chuỗi thành chữ hoa hoặc chữ thường, bạn có thể sử dụng các phương thức True21 hoặc True22 tương ứng

Trong [4]

fox.upper()

Ra[4]

'THE QUICK BROWN FOX.'

Trong [5]

fox.lower()

Ra[5]

'the quick brown fox.'

Một nhu cầu định dạng phổ biến là chỉ viết hoa chữ cái đầu tiên của mỗi từ hoặc có thể là chữ cái đầu tiên của mỗi câu. Điều này có thể được thực hiện với các phương pháp True24 và True23

Trong [6]

fox.title()

Ra[6]

'The Quick Brown Fox.'

Trong [7]

True0

Ra[7]

True1

Các trường hợp có thể được hoán đổi bằng cách sử dụng phương pháp True25

Trong [8]

True2

Ra[8]

True3

Định dạng chuỗi. Thêm và xóa khoảng trắng

Một nhu cầu phổ biến khác là xóa khoảng trắng (hoặc các ký tự khác) khỏi đầu hoặc cuối chuỗi. Phương thức cơ bản để loại bỏ các ký tự là phương thức True31, loại bỏ khoảng trắng ở đầu và cuối dòng

Trong [9]

True4

Ra[9]

True5

Để chỉ xóa khoảng trắng ở bên phải hoặc bên trái, hãy sử dụng lần lượt True32 hoặc True33

Trong [10]

True6

Ra[10]

True7

Trong [11]

True8

Ra[11]

True9

Để xóa các ký tự không phải là khoảng trắng, bạn có thể chuyển ký tự mong muốn cho phương thức True31

Trong [12]

multiline = """ one two three """ 0

Ra[12]

multiline = """ one two three """ 1

Ngược lại với thao tác này, thêm dấu cách hoặc các ký tự khác, có thể được thực hiện bằng cách sử dụng các phương thức True35, True36 và True37

Ví dụ: chúng ta có thể sử dụng phương thức True35 để căn giữa một chuỗi đã cho trong một số khoảng trắng nhất định

Trong [13]

multiline = """ one two three """ 2

Ra[13]

multiline = """ one two three """ 3

Tương tự, True36 và True37 sẽ căn trái hoặc căn phải cho chuỗi trong khoảng cách có độ dài nhất định

Trong [14]

multiline = """ one two three """ 4

Ra[14]

multiline = """ one two three """ 5

Trong [15]

multiline = """ one two three """ 6

Ra[15]

multiline = """ one two three """ 7

Tất cả các phương thức này cũng chấp nhận bất kỳ ký tự nào sẽ được sử dụng để lấp đầy khoảng trống. Ví dụ

Trong [16]

multiline = """ one two three """ 8

Ra[16]

multiline = """ one two three """ 9

Bởi vì điền số 0 là một nhu cầu phổ biến, Python cũng cung cấp True41, đây là một phương pháp đặc biệt để đệm bên phải một chuỗi có số không

Trong [17]

fox = "tHe qUICk bROWn fOx." 0

Ra[17]

multiline = """ one two three """ 9

Tìm và thay thế chuỗi con

Nếu bạn muốn tìm các lần xuất hiện của một ký tự nhất định trong một chuỗi, thì các phương thức True42/True43, True44/True45 và True46 là những phương thức tích hợp sẵn tốt nhất

True42 và True44 rất giống nhau, ở chỗ chúng tìm kiếm sự xuất hiện đầu tiên của một ký tự hoặc chuỗi con trong một chuỗi và trả về chỉ mục của chuỗi con

Trong [18]

fox = "tHe qUICk bROWn fOx." 2

Hết[18]

fox = "tHe qUICk bROWn fOx." 3

Trong 19]

fox = "tHe qUICk bROWn fOx." 4

Hết[19]

fox = "tHe qUICk bROWn fOx." 3

Sự khác biệt duy nhất giữa True42 và True44 là hành vi của họ khi không tìm thấy chuỗi tìm kiếm;

Trong 20]

fox = "tHe qUICk bROWn fOx." 6

Hết[20]

fox = "tHe qUICk bROWn fOx." 7

Trong [21]

fox = "tHe qUICk bROWn fOx." 8

fox = "tHe qUICk bROWn fOx." 9

True43 và True45 có liên quan hoạt động tương tự nhau, ngoại trừ chúng tìm kiếm lần xuất hiện đầu tiên từ cuối chứ không phải từ đầu chuỗi

Trong [22]

fox.upper() 0

Hết[22]

fox.upper() 1

Đối với trường hợp đặc biệt kiểm tra chuỗi con ở đầu hoặc cuối chuỗi, Python cung cấp các phương thức True57 và True58

Trong [23]

fox.upper() 2

Hết[23]

True

Trong [24]

fox.upper() 4

Ra[24]

fox.upper() 5

Để tiến thêm một bước và thay thế một chuỗi con đã cho bằng một chuỗi mới, bạn có thể sử dụng phương thức True46. Ở đây, hãy thay thế True60 bằng True61

Trong [25]

fox.upper() 6

Hết[25]

fox.upper() 7

Hàm True46 trả về một chuỗi mới và sẽ thay thế tất cả các lần xuất hiện của đầu vào

Trong [26]

fox.upper() 8

Hết[26]

fox.upper() 9

Để có cách tiếp cận linh hoạt hơn với chức năng True46 này, hãy xem phần thảo luận về biểu thức chính quy trong

Tách và phân vùng chuỗi

Nếu bạn muốn tìm một chuỗi con và sau đó tách chuỗi dựa trên vị trí của nó, các phương thức True64 và/hoặc True65 là những gì bạn đang tìm kiếm. Cả hai sẽ trả về một chuỗi các chuỗi con

Phương thức True64 trả về một bộ có ba phần tử. chuỗi con trước phiên bản đầu tiên của điểm chia, chính điểm chia và chuỗi con sau

Trong [27]

'THE QUICK BROWN FOX.'0

Hết[27]

'THE QUICK BROWN FOX.'1

Phương thức True67 cũng tương tự nhưng tìm từ bên phải của chuỗi

Phương pháp True65 có lẽ hữu ích hơn; . Mặc định là tách trên bất kỳ khoảng trắng nào, trả về danh sách các từ riêng lẻ trong một chuỗi

Trong [28]

'THE QUICK BROWN FOX.'2

Hết[28]

'THE QUICK BROWN FOX.'3

Một phương pháp có liên quan là True69, phân tách trên các ký tự dòng mới. Hãy làm điều này với một bài Haiku, được cho là phổ biến của nhà thơ thế kỷ 17 Matsuo Bashō

Trong [29]

'THE QUICK BROWN FOX.'4

Hết[29]

'THE QUICK BROWN FOX.'5

Lưu ý rằng nếu bạn muốn hoàn tác một True65, bạn có thể sử dụng phương thức True71, phương thức này trả về một chuỗi được tạo từ một điểm phân tách và một lần lặp

Trong [30]

'THE QUICK BROWN FOX.'6

Ra[30]

'THE QUICK BROWN FOX.'7

Một mẫu phổ biến là sử dụng ký tự đặc biệt True72 (dòng mới) để nối các dòng đã được tách trước đó lại với nhau và khôi phục đầu vào

Trong [31]

'THE QUICK BROWN FOX.'8

'THE QUICK BROWN FOX.'9

định dạng chuỗi

Trong các phương pháp trước, chúng ta đã học cách trích xuất các giá trị từ các chuỗi và tự thao tác các chuỗi thành các định dạng mong muốn. Một cách sử dụng khác của các phương thức chuỗi là thao tác biểu diễn chuỗi các giá trị của các loại khác. Tất nhiên, luôn có thể tìm thấy các biểu diễn chuỗi bằng cách sử dụng hàm True73;

Trong [32]

fox.lower() 0

Ra[32]

fox.lower() 1

Đối với các định dạng phức tạp hơn, bạn có thể muốn sử dụng số học chuỗi như được nêu trong Ngữ nghĩa Python cơ bản. nhà điều hành

Trong [33]

fox.lower() 2

Ra[33]

fox.lower() 3

Một cách linh hoạt hơn để thực hiện việc này là sử dụng các chuỗi định dạng, là các chuỗi có dấu đặc biệt (được đánh dấu bằng dấu ngoặc nhọn) trong đó các giá trị có định dạng chuỗi sẽ được chèn vào. Đây là một ví dụ cơ bản

Trong [34]

fox.lower() 4

Ra[34]

fox.lower() 3

Bên trong điểm đánh dấu True74, bạn cũng có thể bao gồm thông tin về chính xác những gì bạn muốn xuất hiện ở đó. Nếu bạn bao gồm một số, nó sẽ tham chiếu đến chỉ mục của đối số để chèn

Trong [35]

fox.lower() 6

Ra[35]

fox.lower() 7

Nếu bạn bao gồm một chuỗi, nó sẽ tham chiếu đến khóa của bất kỳ đối số từ khóa nào

Trong [36]

fox.lower() 8

Ra[36]

fox.lower() 7

Cuối cùng, đối với đầu vào số, bạn có thể bao gồm mã định dạng kiểm soát cách giá trị được chuyển đổi thành chuỗi. Ví dụ: để in một số dưới dạng dấu phẩy động có ba chữ số sau dấu thập phân, bạn có thể sử dụng cách sau

Trong [37]

'the quick brown fox.'0

Ra[37]

'the quick brown fox.'1

Như trước đây, ở đây "True75" đề cập đến chỉ mục của giá trị được chèn vào. Dấu "______2_______76" mà mã định dạng sẽ tuân theo. "_______2_______77" mã hóa độ chính xác mong muốn. ba chữ số ngoài dấu thập phân, định dạng dấu phẩy động

Kiểu đặc tả định dạng này rất linh hoạt và các ví dụ ở đây hầu như không làm nổi bật bề mặt của các tùy chọn định dạng có sẵn. Để biết thêm thông tin về cú pháp của các chuỗi định dạng này, hãy xem phần tài liệu trực tuyến của Python

Khớp mẫu linh hoạt với biểu thức chính quy

Các phương thức kiểu True78 của Python cung cấp cho bạn một bộ công cụ mạnh mẽ để định dạng, tách và thao tác dữ liệu chuỗi. Nhưng thậm chí còn có nhiều công cụ mạnh mẽ hơn trong mô-đun biểu thức chính quy tích hợp sẵn của Python. Cụm từ thông dụng là một chủ đề lớn; . F. Friedl’s Mastering Regular Expressions, 3rd Edition), vì vậy sẽ khó có thể thực hiện công bằng chỉ trong một tiểu mục.

Mục tiêu của tôi ở đây là cung cấp cho bạn ý tưởng về các loại vấn đề có thể được giải quyết bằng biểu thức chính quy, cũng như ý tưởng cơ bản về cách sử dụng chúng trong Python. Tôi sẽ đề xuất một số tài liệu tham khảo để tìm hiểu thêm trong

Về cơ bản, biểu thức chính quy là phương tiện khớp mẫu linh hoạt trong chuỗi. Nếu bạn thường xuyên sử dụng dòng lệnh, có lẽ bạn đã quen thuộc với kiểu khớp linh hoạt này với ký tự "True79", hoạt động như một ký tự đại diện. Ví dụ: chúng ta có thể liệt kê tất cả sổ ghi chép IPython (i. e. , tệp có phần mở rộng. ipynb) với "Python" trong tên tệp của chúng bằng cách sử dụng ký tự đại diện "True79" để khớp với bất kỳ ký tự nào ở giữa

Trong [38]

'the quick brown fox.'2

'the quick brown fox.'3

Các biểu thức chính quy khái quát hóa ý tưởng "ký tự đại diện" này cho một loạt các cú pháp khớp chuỗi linh hoạt. Giao diện Python cho các biểu thức chính quy được chứa trong mô-đun True81 tích hợp sẵn;

Trong [39]

'the quick brown fox.'4

Hết[39]

'THE QUICK BROWN FOX.'3

Ở đây, trước tiên chúng tôi đã biên soạn một biểu thức chính quy, sau đó sử dụng nó để tách một chuỗi. Giống như phương thức True65 của Python trả về danh sách tất cả các chuỗi con giữa các khoảng trắng, phương thức biểu thức chính quy True65 trả về danh sách tất cả các chuỗi con giữa các kết quả khớp với mẫu đầu vào

Trong trường hợp này, đầu vào là True85. "True86" là một ký tự đặc biệt khớp với bất kỳ khoảng trắng nào (dấu cách, tab, dòng mới, v.v. ) và "_______2_______87" là ký tự biểu thị một hoặc nhiều thực thể đứng trước nó. Do đó, biểu thức chính quy khớp với bất kỳ chuỗi con nào bao gồm một hoặc nhiều khoảng trắng

Phương pháp True65 ở đây về cơ bản là một quy trình thuận tiện được xây dựng dựa trên hành vi khớp mẫu này;

Trong [40]

'the quick brown fox.'6

'the quick brown fox.'7

Giống như True65, có các quy trình thuận tiện tương tự để tìm kết quả khớp đầu tiên (như True91 hoặc True92) hoặc để tìm và thay thế (như True93). Chúng ta sẽ lại sử dụng dòng từ trước

Trong [41]

'the quick brown fox.'8

Với điều này, chúng ta có thể thấy rằng phương pháp True94 hoạt động rất giống với True91 hoặc True92

Trong [42]

fox = "tHe qUICk bROWn fOx." 4

Ra[42]

fox = "tHe qUICk bROWn fOx." 3

Trong [43]

fox.title() 1

Ra[43]

fox = "tHe qUICk bROWn fOx." 3

Tương tự, phương pháp True97 hoạt động giống như phương pháp True93

Trong [44]

fox.title() 3

Ra[44]

fox.title() 4

Trong [45]

fox.title() 5

Ra[45]

fox.title() 4

Với một chút suy nghĩ, các hoạt động chuỗi gốc khác cũng có thể được chuyển thành biểu thức chính quy

Một ví dụ phức tạp hơn

Tuy nhiên, bạn có thể hỏi, tại sao bạn lại muốn sử dụng cú pháp dài dòng và phức tạp hơn của các biểu thức chính quy thay vì các phương thức chuỗi đơn giản và trực quan hơn?

Ở đây chúng ta sẽ xem xét một ví dụ phức tạp hơn. nhiệm vụ phổ biến là khớp các địa chỉ email. Tôi sẽ bắt đầu bằng cách đơn giản là viết một biểu thức chính quy (hơi khó hiểu), sau đó xem qua những gì đang diễn ra. Nó đi từ đây

Trong [46]

fox.title() 7

Sử dụng điều này, nếu chúng tôi được cung cấp một dòng từ tài liệu, chúng tôi có thể nhanh chóng trích xuất những thứ trông giống như địa chỉ email

Trong [47]

fox.title() 8

Ra[47]

fox.title() 9

(Lưu ý rằng những địa chỉ này hoàn toàn được tạo ra; có lẽ có nhiều cách tốt hơn để liên lạc với Guido)

Chúng tôi có thể thực hiện các thao tác khác, chẳng hạn như thay thế các địa chỉ email này bằng một chuỗi khác, có lẽ để ẩn địa chỉ trong đầu ra

Trong [48]

'The Quick Brown Fox.'0

Ra[48]

'The Quick Brown Fox.'1

Cuối cùng, lưu ý rằng nếu bạn thực sự muốn khớp với bất kỳ địa chỉ email nào, biểu thức chính quy trước đó quá đơn giản. Ví dụ: nó chỉ cho phép các địa chỉ được tạo bằng các ký tự chữ và số kết thúc bằng một trong số các hậu tố tên miền phổ biến. Vì vậy, ví dụ, khoảng thời gian được sử dụng ở đây có nghĩa là chúng tôi chỉ tìm thấy một phần của địa chỉ

Trong [49]

'The Quick Brown Fox.'2

Ra[49]

'The Quick Brown Fox.'3

Điều này cho thấy các biểu thức chính quy có thể khó tha thứ như thế nào nếu bạn không cẩn thận. Nếu bạn tìm kiếm trực tuyến, bạn có thể tìm thấy một số gợi ý cho các biểu thức chính quy sẽ khớp với tất cả các email hợp lệ, nhưng hãy cẩn thận. chúng liên quan nhiều hơn so với biểu thức đơn giản được sử dụng ở đây

Khái niệm cơ bản về cú pháp biểu thức chính quy

Cú pháp của biểu thức chính quy là một chủ đề quá lớn cho phần ngắn này. Tuy nhiên, một chút quen thuộc có thể đi một chặng đường dài. Tôi sẽ xem qua một số cấu trúc cơ bản ở đây, sau đó liệt kê một số tài nguyên đầy đủ hơn để bạn có thể tìm hiểu thêm. Hy vọng của tôi là phần hướng dẫn nhanh sau đây sẽ giúp bạn sử dụng những nguồn này một cách hiệu quả

Các chuỗi đơn giản được khớp trực tiếp

Nếu bạn xây dựng một biểu thức chính quy trên một chuỗi ký tự hoặc chữ số đơn giản, nó sẽ khớp với chuỗi chính xác đó

Trong [50]

'The Quick Brown Fox.'4

Hết[50]

'The Quick Brown Fox.'5

Một số ký tự có ý nghĩa đặc biệt

Mặc dù các chữ cái hoặc số đơn giản là đối sánh trực tiếp, nhưng có một số ký tự có ý nghĩa đặc biệt trong các biểu thức thông thường. họ đang

'The Quick Brown Fox.'6

Chúng ta sẽ thảo luận về ý nghĩa của một số trong số này trong giây lát. Trong thời gian chờ đợi, bạn nên biết rằng nếu muốn khớp trực tiếp với bất kỳ ký tự nào trong số này, bạn có thể thoát chúng bằng dấu gạch chéo ngược

Trong [51]

'The Quick Brown Fox.'7

Ra[51]

'The Quick Brown Fox.'8

Lời nói đầu của True99 trong multiline = """ one two three """ 00 biểu thị một chuỗi thô; . Ví dụ: một tab được biểu thị bằng multiline = """ one two three """ 01

Trong [52]

'The Quick Brown Fox.'9

True00

Sự thay thế như vậy không được thực hiện trong một chuỗi thô

Trong [53]

True01

True02

Vì lý do này, bất cứ khi nào bạn sử dụng dấu gạch chéo ngược trong biểu thức chính quy, bạn nên sử dụng chuỗi thô

Các ký tự đặc biệt có thể khớp với các nhóm ký tự

Giống như ký tự multiline = """ one two three """ 02 trong các biểu thức chính quy có thể thoát khỏi các ký tự đặc biệt, biến chúng thành các ký tự bình thường, nó cũng có thể được sử dụng để mang lại ý nghĩa đặc biệt cho các ký tự bình thường. Các ký tự đặc biệt này khớp với các nhóm ký tự được chỉ định và chúng tôi đã thấy chúng trước đây. Trong regex địa chỉ email từ trước, chúng tôi đã sử dụng ký tự multiline = """ one two three """ 03, đây là một điểm đánh dấu đặc biệt khớp với bất kỳ ký tự chữ và số nào. Tương tự, trong ví dụ đơn giản về True65, chúng ta cũng thấy multiline = """ one two three """ 05, một dấu hiệu đặc biệt cho biết bất kỳ ký tự khoảng trắng nào

Đặt chúng lại với nhau, chúng ta có thể tạo một biểu thức chính quy khớp với hai chữ cái/chữ số bất kỳ có khoảng trắng giữa chúng

Trong [54]

True03

Ra[54]

True04

Ví dụ này bắt đầu gợi ý về sức mạnh và tính linh hoạt của các biểu thức chính quy

Bảng sau đây liệt kê một số ký tự thường hữu ích

Ký tự Mô tả Ký tự Mô tả_______3_______06Khớp với bất kỳ chữ số nàomultiline = """ one two three """ 07Khớp với bất kỳ ký tự nào không phải chữ sốmultiline = """ one two three """ 05Khớp với bất kỳ khoảng trắng nàomultiline = """ one two three """ 09Khớp với bất kỳ ký tự không phải khoảng trắng nàomultiline = """ one two three """ 03So khớp với bất kỳ ký tự chữ và số nàomultiline = """ one two three """ 11So khớp với bất kỳ ký tự không phải chữ và số nào

Đây không phải là một danh sách hoặc mô tả toàn diện;

Dấu ngoặc vuông khớp với các nhóm ký tự tùy chỉnh

Nếu các nhóm ký tự tích hợp không đủ cụ thể cho bạn, bạn có thể sử dụng dấu ngoặc vuông để chỉ định bất kỳ bộ ký tự nào mà bạn quan tâm. Ví dụ: phần sau sẽ khớp với bất kỳ nguyên âm viết thường nào

Trong [55]

True05

Hết[55]

True06

Tương tự, bạn có thể sử dụng dấu gạch ngang để chỉ định phạm vi. ví dụ: multiline = """ one two three """ 12 sẽ khớp với bất kỳ chữ cái viết thường nào và multiline = """ one two three """ 13 sẽ khớp với bất kỳ ký tự nào trong số multiline = """ one two three """ 14, multiline = """ one two three """ 15 hoặc multiline = """ one two three """ 16. Chẳng hạn, bạn có thể cần trích xuất từ ​​một tài liệu các mã số cụ thể bao gồm một chữ in hoa theo sau là một chữ số. Bạn có thể làm điều này như sau

Trong [56]

True07

Hết[56]

True08

Ký tự đại diện khớp với các ký tự lặp lại

Nếu bạn muốn khớp một chuỗi với ba ký tự chữ và số trong một hàng, bạn có thể viết, ví dụ: multiline = """ one two three """ 17. Bởi vì đây là một nhu cầu phổ biến, nên có một cú pháp cụ thể để khớp với các lần lặp lại – dấu ngoặc nhọn với một số

Trong [57]

True09

Ra[57]

True10

Ngoài ra còn có các điểm đánh dấu để khớp với bất kỳ số lần lặp lại nào – ví dụ: ký tự multiline = """ one two three """ 18 sẽ khớp với một hoặc nhiều lần lặp lại của ký tự đứng trước nó

Trong [58]

True11

Hết[58]

True12

Sau đây là bảng đánh dấu lặp lại có sẵn để sử dụng trong biểu thức chính quy

Nhân vật Mô tảVí dụmultiline = """ one two three """ 19Trùng 0 hoặc một lần lặp lại của các trận đấu trước_______3_______20 trận đấu multiline = """ one two three """ 21 hoặc multiline = """ one two three """ 22True79Trùng khớp không hoặc nhiều lần lặp lại của các trận đấu trướcmultiline = """ one two three """ 24 multiline = """ one two three """ 21, multiline = """ one two three """ 22, multiline = """ one two three """ 27, multiline = """ one two three """ 28. True87Trận đấu một hoặc nhiều lần lặp lại của các trận đấu trước_______3_______30 multiline = """ one two three """ 22, multiline = """ one two three """ 27, multiline = """ one two three """ 28. nhưng không phải là multiline = """ one two three """ 21multiline = """ one two three """ 35Trận đấu multiline = """ one two three """ 36 lần lặp lại đánh vần trướcmultiline = """ one two three """ 37 trận đấu multiline = """ one two three """ 27multiline = """ one two three """ 39Trận đấu giữa multiline = """ one two three """ 40 và multiline = """ one two three """ 36 lần lặp lại của trận đấu trước_______3_______42 multiline = """ one two three """ 27 hoặc multiline = """ one two three """ 28

Lưu ý những điều cơ bản này, hãy quay lại công cụ đối sánh địa chỉ email của chúng tôi

Trong [59]

True13

Bây giờ chúng ta có thể hiểu điều này có nghĩa là gì. chúng tôi muốn có một hoặc nhiều ký tự chữ và số (multiline = """ one two three """ 45), tiếp theo là ký hiệu tại (multiline = """ one two three """ 46), tiếp theo là một hoặc nhiều ký tự chữ và số (multiline = """ one two three """ 45), tiếp theo là dấu chấm (multiline = """ one two three """ 48 – lưu ý cần có dấu gạch chéo ngược thoát), theo sau chính xác là ba

Nếu bây giờ chúng tôi muốn sửa đổi điều này để địa chỉ email của Obama khớp với nhau, chúng tôi có thể thực hiện bằng cách sử dụng ký hiệu dấu ngoặc vuông

Trong [60]

True14

Hết[60]

True15

Chúng tôi đã thay đổi multiline = """ one two three """ 45 thành multiline = """ one two three """ 50, vì vậy chúng tôi sẽ khớp bất kỳ ký tự chữ và số nào hoặc dấu chấm. Với cách diễn đạt linh hoạt hơn này, chúng tôi có thể đối sánh nhiều loại địa chỉ email hơn (mặc dù vẫn chưa phải là tất cả – bạn có thể xác định những thiếu sót khác của cách diễn đạt này không?)

Dấu ngoặc đơn chỉ ra các nhóm để trích xuất

Đối với các cụm từ thông dụng phức hợp như trình đối sánh email của chúng tôi, chúng tôi thường muốn trích xuất các thành phần của chúng hơn là đối sánh đầy đủ. Điều này có thể được thực hiện bằng cách sử dụng dấu ngoặc đơn để nhóm các kết quả

Trong [61]

True16

Trong [62]

True17

Hết[62]

True18

Như chúng ta thấy, nhóm này thực sự trích xuất một danh sách các thành phần phụ của địa chỉ email

Chúng ta có thể đi xa hơn một chút và đặt tên cho các thành phần được trích xuất bằng cách sử dụng cú pháp multiline = """ one two three """ 51, trong trường hợp đó, các nhóm có thể được trích xuất dưới dạng từ điển Python

Trong [63]

True19

Ra[63]

True20

Kết hợp những ý tưởng này (cũng như một số cú pháp regexp mạnh mẽ mà chúng tôi chưa trình bày ở đây) cho phép bạn trích xuất thông tin từ các chuỗi trong Python một cách linh hoạt và nhanh chóng

Tài nguyên khác về Biểu thức chính quy

Cuộc thảo luận ở trên chỉ là một cách xử lý nhanh (và còn lâu mới hoàn thành) về chủ đề lớn này. Nếu bạn muốn tìm hiểu thêm, tôi đề xuất các tài nguyên sau

  • Tài liệu về gói True81 của Python. Tôi thấy rằng tôi nhanh chóng quên cách sử dụng các biểu thức chính quy mỗi khi tôi sử dụng chúng. Bây giờ tôi đã có kiến ​​thức cơ bản, tôi nhận thấy trang này là một nguồn tài nguyên vô cùng quý giá để nhớ lại ý nghĩa của từng ký tự hoặc chuỗi cụ thể trong một biểu thức chính quy
  • Biểu thức chính quy chính thức của Python HOWTO. một cách tiếp cận tường thuật hơn đối với các biểu thức chính quy trong Python
  • Mastering Regular Expressions (OReilly, 2006) là một cuốn sách hơn 500 trang về chủ đề này. Nếu bạn muốn xử lý thực sự đầy đủ về chủ đề này, thì đây là tài nguyên dành cho bạn

Để biết một số ví dụ về thao tác chuỗi và biểu thức chính quy đang hoạt động ở quy mô lớn hơn, hãy xem , nơi chúng tôi xem xét việc áp dụng các loại biểu thức này trên các bảng dữ liệu chuỗi trong gói Pandas

Bạn có thể thay thế một ký tự ở giữa một chuỗi Python không?

Python sở hữu nhiều hàm dựng sẵn giúp lập trình dễ dàng và phương thức replace() là một trong số đó. Phương thức replace() giúp thay thế sự xuất hiện của ký tự cũ đã cho bằng ký tự hoặc chuỗi con mới .

Có một. thay thế bằng Python?

Phương thức replace() là một chức năng tích hợp được cung cấp trong lập trình Python . Nó thay thế tất cả các lần xuất hiện của chuỗi con cũ bằng chuỗi con mới. Replace() trả về một chuỗi mới trong đó chuỗi con cũ được thay thế bằng chuỗi con mới.

Chủ đề