Ký tự đặc biệt trong biểu thức chính quy trong python
Các ký tự đặc biệt khiến việc xử lý văn bản trở nên phức tạp hơn vì bạn phải chú ý nhiều đến ngữ cảnh. Nếu bạn đang xem mã Python có chứa biểu thức chính quy, bạn phải suy nghĩ về những gì bạn thấy, Python thấy gì và công cụ biểu thức chính quy thấy gì. Một ký tự có thể đặc biệt đối với Python nhưng không phải là biểu thức chính quy hoặc ngược lại Show Bài đăng này đi qua một ví dụ chi tiết cho thấy cách quản lý các ký tự đặc biệt trong một số ngữ cảnh khác nhau Thoát các ký tự TeX đặc biệtGần đây tôi cần viết một biểu thức chính quy [1] để thoát khỏi các ký tự đặc biệt của TeX. Tôi đang đọc văn bản như Dấu gạch dưới không phải là ký tự đặc biệt duy nhất trong TeX. Nó có mười ký tự đặc biệt \ { } $ & # ^ _ % ~ Hai câu mà mọi người thường vấp phải nhất có lẽ là special = r"\\{}$^_%~"0 vì những câu này khá phổ biến trong văn xuôi thông thường. Vì special = r"\\{}$^_%~"0 bắt đầu nhận xét trong TeX, nhập dấu phần trăm mà không thoát nó sẽ bị lỗi âm thầm. Kết quả là hợp lệ về mặt cú pháp. Nó chỉ cắt đứt phần còn lại của dòng một cách hiệu quả Vì vậy, bất cứ khi nào tập lệnh của tôi nhìn thấy một ký tự đặc biệt TeX chưa được thoát, tôi muốn nó thoát khỏi ký tự đó dây thôTrước tiên, tôi cần nói cho Python biết các ký tự đặc biệt dành cho TeX special = r"\\{}$^_%~" Có điều gì đó thú vị đang diễn ra ở đây. Hầu hết các ký tự đặc biệt đối với TeX không đặc biệt đối với Python. Nhưng dấu gạch chéo ngược là đặc biệt cho cả hai. Dấu gạch chéo ngược cũng đặc biệt đối với các biểu thức chính quy. Tiền tố special = r"\\{}$^_%~"2 trước dấu ngoặc kép cho Python biết đây là chuỗi "thô" và nó không nên hiểu dấu gạch chéo ngược là đặc biệt. Nó nói rằng “Tôi thực sự muốn một chuỗi bắt đầu bằng hai dấu gạch chéo ngược. ” Tại sao hai dấu gạch chéo ngược? . Thêm về điều đó trong thời gian ngắn Nhìn về phía sauĐây là biểu thức chính quy của tôi re.sub(r"(?
[1] Bất cứ khi nào tôi viết về việc sử dụng biểu thức chính quy, ai đó sẽ phàn nàn rằng giải pháp của tôi không hoàn toàn chung chung và họ có thể tạo đầu vào sẽ phá vỡ mã của tôi. Tôi hiểu điều đó, nhưng nó phù hợp với tôi trong hoàn cảnh của tôi. Tôi chỉ viết kịch bản để hoàn thành công việc của mình, không tuyên bố đã viết phần mềm sản xuất cứng cho bất kỳ ai khác sử dụng [2] Ghi nhớ ngữ cảnh. Chúng tôi có ba ngôn ngữ đang chơi. TeX, Python và các biểu thức chính quy. Một trong những chìa khóa để hiểu các biểu thức chính quy là xem chúng như một ngôn ngữ nhỏ được nhúng bên trong các ngôn ngữ khác như Python. Vì vậy, bất cứ khi nào bạn nghe một nhân vật là đặc biệt, hãy tự hỏi bản thân “Đặc biệt với ai?”. Điều này đặc biệt khó hiểu ở đây vì dấu gạch chéo ngược đặc biệt đối với cả ba ngôn ngữ Các ký tự đặc biệt trong Python là gì?Trong các chuỗi Python, dấu gạch chéo ngược "\" là một ký tự đặc biệt, còn được gọi là ký tự "thoát" . Nó được sử dụng để đại diện cho các ký tự khoảng trắng nhất định. "\t" là một tab, "\n" là một dòng mới và "\r" là một xuống dòng. Ngược lại, đặt trước một ký tự đặc biệt với "\" sẽ biến ký tự đó thành một ký tự thông thường.
\s trong biểu thức chính quy là gì?Biểu thức chính quy \s là một lớp ký tự được xác định trước . Nó chỉ ra một ký tự khoảng trắng.
Hai loại ký tự được sử dụng trong biểu thức chính quy trong Python là gì?Trong RE, chúng tôi sử dụng chữ hoặc ký tự meta . nghĩa đen là chính các ký tự và không có ý nghĩa đặc biệt. Đây là một ví dụ trong đó tôi sử dụng các ký tự để tìm một chuỗi cụ thể trong văn bản bằng cách sử dụng phương thức findall của mô-đun re. |