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

True
21,
True
22,
True
23,
True
24 và
True
25, 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

True
21 hoặc
True
22 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

True
24 và
True
23

Trong [6]

fox.title()

Ra[6]

'The Quick Brown Fox.'

Trong [7]

True
0

Ra[7]

True
1

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

True
25

Trong [8]

True
2

Ra[8]

True
3

Đị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

True
31, loại bỏ khoảng trắng ở đầu và cuối dòng

Trong [9]

True
4

Ra[9]

True
5

Để 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

True
32 hoặc
True
33

Trong [10]

True
6

Ra[10]

True
7

Trong [11]

True
8

Ra[11]

True
9

Để 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

True
31

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

True
35,
True
36 và
True
37

Ví dụ: chúng ta có thể sử dụng phương thức

True
35 để 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ự,

True
36 và
True
37 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

True
41, đâ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

True
42/
True
43,
True
44/
True
45 và
True
46 là những phương thức tích hợp sẵn tốt nhất

True
42 và
True
44 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

True
42 và
True
44 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

True
43 và
True
45 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

True
57 và
True
58

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

True
46. Ở đây, hãy thay thế
True
60 bằng
True
61

Trong [25]

fox.upper()
6

Hết[25]

fox.upper()
7

Hàm

True
46 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

True
46 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

True
64 và/hoặc
True
65 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

True
64 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

True
67 cũng tương tự nhưng tìm từ bên phải của chuỗi

Phương pháp

True
65 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à

True
69, 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

True
65, bạn có thể sử dụng phương thức
True
71, 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

True
72 (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

True
73;

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

True
74, 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 "

True
75" đề 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

True
78 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ự "

True
79", 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 "
True
79" để 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

True
81 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

True
65 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
True
65 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à

True
85. "
True
86" 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

True
65 ở đâ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ư

True
65, có các quy trình thuận tiện tương tự để tìm kết quả khớp đầu tiên (như
True
91 hoặc
True
92) hoặc để tìm và thay thế (như
True
93). 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

True
94 hoạt động rất giống với
True
91 hoặc
True
92

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

True
97 hoạt động giống như phương pháp
True
93

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

True
99 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

True
00

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

Trong [53]

True
01

True
02

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ề
True
65, 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]

True
03

Ra[54]

True
04

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ào
multiline = """
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ào
multiline = """
one
two
three
"""
09Khớp với bất kỳ ký tự không phải khoảng trắng nào
multiline = """
one
two
three
"""
03So khớp với bất kỳ ký tự chữ và số nào
multiline = """
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]

True
05

Hết[55]

True
06

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]

True
07

Hết[56]

True
08

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]

True
09

Ra[57]

True
10

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]

True
11

Hết[58]

True
12

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
"""
22
True
79Trùng khớp không hoặc nhiều lần lặp lại của các trận đấu trước
multiline = """
one
two
three
"""
24
multiline = """
one
two
three
"""
21,
multiline = """
one
two
three
"""
22,
multiline = """
one
two
three
"""
27,
multiline = """
one
two
three
"""
28.
True
87Trậ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
"""
21
multiline = """
one
two
three
"""
35Trận đấu
multiline = """
one
two
three
"""
36 lần lặp lại đánh vần trước
multiline = """
one
two
three
"""
37 trận đấu
multiline = """
one
two
three
"""
27
multiline = """
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]

True
13

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]

True
14

Hết[60]

True
15

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]

True
16

Trong [62]

True
17

Hết[62]

True
18

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]

True
19

Ra[63]

True
20

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
    True
    81 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.