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

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ệt

Gầ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ư ICD9_CODE và cần biến nó thành ICD9\_CODE để TeX hiểu dấu gạch dưới là dấu gạch dưới theo nghĩa đen và hướng dẫn chỉ số dưới

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"[? . 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.

Chủ Đề