Hướng dẫn cho người mới bắt đầu về biểu thức chính quy với Python

Hướng dẫn cho người mới bắt đầu về biểu thức chính quy với Python

Nếu bạn là một lập trình viên, rất có thể bạn đã biết biểu thức chính quy (regex) là gì. Các mẫu Regex đã được triển khai trong hầu hết các ngôn ngữ lập trình chính thống, nhưng sức mạnh và tính linh hoạt của các mẫu này vẫn chưa được hầu hết các nhà phát triển công nhận.





Hướng dẫn này là tất cả về các biểu thức chính quy và cách bạn có thể sử dụng chúng trong ngôn ngữ lập trình Python.





Biểu thức chính quy là gì?

Biểu thức chính quy là các mẫu giúp người dùng đối sánh các tổ hợp ký tự trong tệp văn bản và chuỗi. Bạn có thể sử dụng biểu thức chính quy để lọc hoặc tìm một mẫu cụ thể trong đầu ra của lệnh hoặc tài liệu.





Có nhiều trường hợp sử dụng khác nhau của biểu thức chính quy, điều nổi tiếng nhất lệnh grep trong Linux . Các ứng dụng khác bao gồm lọc thông tin như trích xuất địa chỉ email và số điện thoại từ một kết xuất dữ liệu.

Lý do chính khiến nhiều nhà phát triển rời xa biểu thức chính quy là do thiếu nhận thức về sức mạnh của đối sánh mẫu. Một số thậm chí còn thấy các biểu thức chính quy gây nhầm lẫn vì số lượng ký tự và chuỗi được sử dụng trong các mẫu quá lớn.



Bất kể lý do có thể là gì, biểu thức chính quy đang và sẽ là một trong những khía cạnh quan trọng nhất của lập trình mà mọi người nên biết.

windows 10 hiện không có tùy chọn nguồn nào

Biểu thức chính quy: Khớp các ký tự và chuỗi

Bản thân Regex là một ngôn ngữ hoàn toàn mới. Một công cụ regex diễn giải các mẫu bao gồm một số ký tự được trang bị với các ý nghĩa cụ thể. Các ký tự cơ bản như ký tự chữ và số tự khớp với nhau. Nhưng các ký tự phức tạp như $, *, +, {, v.v. sẽ hỗ trợ việc so khớp thứ tự cao hơn.





  1. Dấu hoa thị (*): Khớp với ký tự trước đó không hoặc nhiều lần. Nghĩa đen của ký tự sẽ là 'Phần tử được nhân lên n lần'. Ví dụ: nếu biểu thức chính quy là abc * , các chuỗi được so khớp sẽ là ab, abc, abcc, abccc, abcccc, v.v. Biểu thức [bc] * sẽ khớp với bc, bcbc, bcbc, v.v.
  2. Thêm (+): Khớp với ký tự trước đó một hoặc nhiều lần. Hoạt động của + nhân vật tương tự như * , nhưng + ký tự bỏ qua mẫu nếu ký tự không xuất hiện. Ví dụ, abc + sẽ khớp với abc, abcc, abccc, v.v. nhưng không khớp với ab.
  3. Dấu chấm hỏi (?): Khớp với ký tự trước đó bằng 0 hoặc một (các) lần. Ví dụ, mẫu abc? sẽ chỉ khớp với ab và abc.
  4. Ống (|): Được sử dụng như một hệ nhị phân HOẶC nhà điều hành. Khớp một trong các ký tự đứng trước và nối tiếp đường ống. Ví dụ, a | b sẽ khớp với a hoặc b.
  5. Dấu chấm (.): Khớp với một nhân vật không xác định được danh tính. Ví dụ, AC sẽ khớp với aac, abc, acc, a2c, v.v.
  6. Cà rốt (^): Khớp với ký tự đầu tiên trong mẫu. Ví dụ, ^Ra sẽ khớp các từ bắt đầu bằng Ra chẳng hạn như Rabbit, Raccoon và Random.
  7. Đô la ($): Khớp với ký tự cuối cùng trong mẫu. Ví dụ, một đô la sẽ khớp các từ kết thúc bằng một chẳng hạn như Van, Dan và Plan.
  8. Dấu gạch nối (-): Được sử dụng để xác định một loạt các ký tự. Ví dụ, [0-9] sẽ khớp với tất cả các ký tự số có một chữ số.

Các chuỗi đặc biệt được sử dụng trong các mẫu biểu thức chính quy là:

  1. ĐẾN: Trả về một kết quả phù hợp nếu các ký tự tiếp theo hiện diện ở đầu chuỗi. Ví dụ, AThe sẽ khớp các từ bắt đầu bằng Các chẳng hạn như The, Them, They, v.v.
  2. NS: Trả về kết quả phù hợp nếu ký tự được tìm thấy ở đầu hoặc cuối từ. Ví dụ, bmadđiên rồ b sẽ kết hợp các từ chẳng hạn như làm rangười du mục tương ứng.
  3. NS: Trả về kết quả phù hợp nếu không tìm thấy ký tự ở đầu hoặc cuối từ.
  4. NS: Khớp các ký tự số có trong chuỗi. Ví dụ, /NS* sẽ khớp với các số như 1, 12, 1232, v.v.
  5. NS: Khớp các ký tự không phải số trong chuỗi. /NS sẽ khớp với a, b, c, f, v.v.
  6. NS: Khớp một ký tự khoảng trắng trong văn bản.
  7. NS: Khớp một ký tự không có khoảng trắng trong văn bản.
  8. rong: Trả về một kết quả phù hợp nếu chuỗi chứa các ký tự chữ và số bao gồm cả dấu gạch dưới. Ví dụ, rong sẽ khớp với a, b, c, d, 1, 2, 3, v.v.
  9. TRONG: Trả về một kết quả phù hợp nếu chuỗi không chứa ký tự chữ và số hoặc dấu gạch dưới.
  10. VỚI: Khớp các ký tự ở cuối một chuỗi. Ví dụ, end Z sẽ khớp các từ kết thúc bằng kết thúc chẳng hạn như uốn cong, hàn gắn, xu hướng, v.v.

Các phương thức Python cho các biểu thức chính quy

Trong Python, lại thư viện cung cấp tất cả các chức năng cần thiết và tiện ích cần thiết để triển khai regex trong các chương trình của bạn. Bạn không phải tải xuống thư viện bằng cách sử dụng pip vì nó được cài đặt sẵn với trình thông dịch Python.





Để nhập lại thư viện bằng Python, hãy thêm mã sau vào tập lệnh của bạn:

import re

Lưu ý rằng trong khi chuyển các biểu thức chính quy trong Python, chúng tôi sử dụng các chuỗi thô vì chúng không diễn giải các ký tự đặc biệt như NS khác nhau.

Trận đấu()

Các re.match () phương thức trong Python trả về một đối tượng regex nếu chương trình tìm thấy một kết quả khớp ở đầu chuỗi được chỉ định. Hàm này có hai đối số cơ bản:

re.match(pattern, string)

...ở đâu mẫu là biểu thức chính quy và dây là văn bản cần được tìm kiếm.

Hãy xem đoạn mã bên dưới.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

Các NS ký tự trước chuỗi là viết tắt của chuỗi thô.

Đầu ra:

None

Mã nói trên trả về Không có tại vì Từ không có ở đầu chuỗi.

Nếu tìm thấy kết quả phù hợp, bạn có thể in kết quả phù hợp bằng cách sử dụng tập đoàn() phương thức thuộc đối tượng regex.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Đầu ra:

Word

Các nghiên cứu () phương thức nhận các đối số tương tự như re.match (). Trong khi match () chỉ trả về các kết quả phù hợp có ở đầu chuỗi, Tìm kiếm() sẽ trả về các kết quả phù hợp được tìm thấy tại bất kỳ chỉ mục nào trong chuỗi.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Lưu ý rằng trận đấu()Tìm kiếm() các phương thức sẽ chỉ trả về một mẫu phù hợp. Trong đoạn mã được đề cập ở trên, Từ xuất hiện hai lần. Nhưng Tìm kiếm() hàm sẽ chỉ khớp với lần xuất hiện đầu tiên của từ.

Word

FindAll ()

Như bạn đã có thể đoán, findall () phương thức trả về mọi kết quả phù hợp có thể có trong chuỗi.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Thay vì trả về một đối tượng regex, hàm findall () trả về một danh sách tất cả các kết quả phù hợp. Bạn có thể lặp lại danh sách bằng cách sử dụng vòng lặp for trong python .

Tách ra()

Nếu bạn muốn chia một chuỗi thành các chuỗi con bằng cách sử dụng một mẫu làm dấu phân cách, thì tách ra() chức năng là một trong những bạn cần.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Đầu ra:

['This word', 'that', 'this are different.']

Sub ()

Các phụ () cho phép người dùng thay thế một từ cụ thể vào vị trí của một mẫu. Nó có các đối số sau đây.

re.sub(pattern, replacement, string)

Hãy xem xét đoạn mã này:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Đầu ra:

Dave or Harry must be punished.

Biên dịch ()

Các re.compile () phương pháp trong lại thư viện cho phép người dùng lưu trữ phiên bản đã biên dịch của mẫu biểu thức chính quy trong bộ nhớ. Sau đó, bằng cách sử dụng đối tượng đã biên dịch, người dùng có thể nhanh chóng lọc kết xuất văn bản được chỉ định cho các mẫu phù hợp.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Chức năng này chủ yếu được sử dụng để lưu các mẫu sử dụng nhiều tài nguyên và cần nhiều thời gian để chạy. Biên dịch và lưu mẫu dưới dạng một đối tượng trước đó sẽ giải quyết được vấn đề này.

Tận dụng sức mạnh của Regex với Python

Khi bạn đang làm việc với các tệp văn bản và đầu ra, regex là một công cụ tuyệt vời để bạn sử dụng. Bạn có thể nhanh chóng viết một số mã để lọc hoặc thay thế các mẫu cụ thể trong tài liệu.

Việc ghi nhớ tất cả các ký tự và các chuỗi kết hợp có thể khó nếu bạn mới bắt đầu với regex. Để trở nên tốt hơn trong các biểu thức chính quy, thỉnh thoảng tham khảo danh sách các ký tự, phương thức và chuỗi chắc chắn sẽ giúp ích cho bạn về lâu dài.

Đăng lại Đăng lại tiếng riu ríu E-mail Bảng Cheat Python RegEx dành cho các lập trình viên mới bắt đầu

Sử dụng danh sách các biểu thức chính quy Python này để bạn có thể sử dụng tốt hơn ngôn ngữ lập trình đa năng này.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Lập trình
  • Python
Giới thiệu về tác giả Deepesh Sharma(Đã xuất bản 79 bài báo)

Deepesh là Junior Editor cho Linux tại MUO. Anh ấy viết các hướng dẫn thông tin về Linux, nhằm mục đích cung cấp trải nghiệm thú vị cho tất cả những người mới đến. Không chắc về phim, nhưng nếu bạn muốn nói về công nghệ, anh ấy là người của bạn. Khi rảnh rỗi, bạn có thể bắt gặp anh ấy đọc sách, nghe các thể loại âm nhạc khác nhau hoặc chơi guitar.

Xem thêm từ Deepesh Sharma

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký