Hướng dẫn how to match backslash in regex python? - làm thế nào để so khớp dấu gạch chéo ngược trong regex python?

Một ký tự R trước biểu thức chính quy trong lệnh gọi để tìm kiếm () chỉ định rằng biểu thức chính quy là một chuỗi thô. Điều này cho phép sử dụng dấu gạch chéo ngược trong biểu thức thông thường như các ký tự thông thường hơn là trong một chuỗi các ký tự thoát. Hãy để tôi giải thích ...

Trước khi phương thức tìm kiếm của mô -đun RE xử lý các chuỗi được truyền cho nó, trình thông dịch Python sẽ vượt qua chuỗi ban đầu. Nếu có các dấu gạch chéo ngược trong một chuỗi, trình thông dịch Python phải quyết định xem mỗi người là một phần của chuỗi thoát Python (ví dụ: \ n hoặc \ t) hoặc không.

Lưu ý: Tại thời điểm này, Python không quan tâm liệu '\' có phải là một nhân vật tổng hợp biểu thức thông thường hay không.

Nếu '\' được theo sau bởi một ký tự thoát Python được công nhận (t, n, v.v.), thì dấu gạch chéo ngược và ký tự thoát được thay thế bằng ký tự unicode hoặc 8 bit thực tế. Ví dụ: '\ t' sẽ được thay thế bằng ký tự ASCII cho tab. Nếu không, nó được truyền qua và được hiểu là một nhân vật '\'.

Xem xét những điều sau đây.

>>> s = '\t'
>>> print ("[" + s  + "]")
>>> [       ]           // an actual tab character after preprocessing

>>> s = '\d'
>>> print ("[" + s  + "]")
>>> [\d]                // '\d' after preprocessing

Đôi khi chúng tôi muốn đưa vào một chuỗi một chuỗi ký tự bao gồm '\' mà không được Python hiểu là một chuỗi thoát. Để làm điều này, chúng tôi thoát khỏi '\' với '\'. Bây giờ khi Python nhìn thấy '\', nó thay thế hai dấu gạch chéo ngược bằng một ký tự '\' duy nhất.

>>> s = '\\t'
>>> print ("[" + s  + "]")
>>> [\t]                // '\t' after preprocessing

Sau khi trình thông dịch Python vượt qua cả hai chuỗi, chúng được chuyển sang phương thức tìm kiếm của mô -đun RE. Phương thức tìm kiếm phân tích chuỗi biểu thức thông thường để xác định các ký tự meta của biểu thức thông thường.

Bây giờ '\' cũng là một nhân vật tổng hợp biểu thức thông thường đặc biệt và được hiểu là một trừ khi nó được thoát ra tại thời điểm phương thức tìm kiếm RE () được thực thi.

Xem xét cuộc gọi sau.

>>> match = re.search('a\\t','a\\t')        //Match is None

Ở đây, trận đấu là không có. Tại sao? Hãy nhìn vào các chuỗi sau khi thông dịch viên Python thực hiện vượt qua.

String 1: 'a\t'
String 2: 'a\t' 

Vậy tại sao khớp với không có? Khi search () diễn giải chuỗi 1, vì nó là một biểu thức chính quy, dấu gạch chéo ngược được hiểu là một nhân vật tổng hợp, không phải là một ký tự thông thường. Tuy nhiên, dấu gạch chéo ngược trong chuỗi 2 không nằm trong một biểu thức thông thường và đã được trình thông dịch Python xử lý, vì vậy nó được hiểu là một ký tự thông thường.

Vì vậy, phương thức search () đang tìm kiếm 'A Escape-t' trong chuỗi 'a \ t' không phải là một trận đấu.

Để khắc phục điều này, chúng ta có thể nói cho phương thức search () để không giải thích '\' như một nhân vật tổng hợp. Chúng ta có thể làm điều này bằng cách thoát khỏi nó.

Xem xét cuộc gọi sau.

Ở đây, trận đấu là không có. Tại sao? Hãy nhìn vào các chuỗi sau khi thông dịch viên Python thực hiện vượt qua.

Vậy tại sao khớp với không có? Khi search () diễn giải chuỗi 1, vì nó là một biểu thức chính quy, dấu gạch chéo ngược được hiểu là một nhân vật tổng hợp, không phải là một ký tự thông thường. Tuy nhiên, dấu gạch chéo ngược trong chuỗi 2 không nằm trong một biểu thức thông thường và đã được trình thông dịch Python xử lý, vì vậy nó được hiểu là một ký tự thông thường.

String 1: 'a\\t'
String 2: 'a\t'

Vì vậy, phương thức search () đang tìm kiếm 'A Escape-t' trong chuỗi 'a \ t' không phải là một trận đấu.

Để khắc phục điều này, chúng ta có thể nói cho phương thức search () để không giải thích '\' như một nhân vật tổng hợp. Chúng ta có thể làm điều này bằng cách thoát khỏi nó.

>>> match = re.search('a\\\\t','a\\t')          // Match contains 'a\t'

>>> match = re.search(r'a\\t','a\\t')           // match contains 'a\t'

Một lần nữa, hãy nhìn vào các chuỗi sau khi phiên dịch viên Python đã vượt qua.

String 1: 'a\\t'
String 2: 'a\t'

Bây giờ khi phương thức tìm kiếm () xử lý biểu thức chính quy, nó thấy rằng dấu gạch chéo ngược thứ hai được thoát ra bởi phương pháp thứ nhất và không nên được coi là một nhân vật tổng hợp. Do đó, nó diễn giải chuỗi là 'a \ t', phù hợp với chuỗi 2.

Nói tóm lại, để phù hợp với dấu gạch chéo ngược theo nghĩa đen, người ta phải viết '\\\\\\' làm chuỗi re, vì biểu thức thông thường phải là "\\" và mỗi dấu gạch chéo ngược phải được biểu thị là "\\" bên trong một python thông thường chuỗi chữ.

Giả sử bạn muốn viết một RE khớp với chuỗi "\ mart", có thể được tìm thấy trong một tệp latex. Để tìm ra những gì cần viết trong mã chương trình, hãy bắt đầu với chuỗi mong muốn được khớp. Tiếp theo, bạn phải thoát khỏi bất kỳ dấu gạch chéo ngược nào và các metacharacters khác bằng cách trước chúng bằng một dấu gạch chéo ngược, dẫn đến chuỗi "\\ phần". Chuỗi kết quả phải được chuyển cho re.compile () phải là \\section. Tuy nhiên, để thể hiện điều này như một chuỗi Python theo nghĩa đen, cả hai dấu gạch chéo ngược phải được thoát ra một lần nữa.LATEX file. To figure out what to write in the program code, start with the desired string to be matched. Next, you must escape any backslashes and other metacharacters by preceding them with a backslash, resulting in the string "\\section". The resulting string that must be passed to re.compile() must be \\section. However, to express this as a Python string literal, both backslashes must be escaped again.

Nhân vậtSân khấu
\sectionChuỗi văn bản được khớp
________số 8Thoát khỏi sự chao đảo cho re.compile
>>> s = '\\t'
>>> print ("[" + s  + "]")
>>> [\t]                // '\t' after preprocessing
1
Thoát khỏi sự chéo ngược cho một chuỗi theo nghĩa đen

Nói tóm lại, để phù hợp với dấu gạch chéo ngược theo nghĩa đen, người ta phải viết '\\\\\\' làm chuỗi re, vì biểu thức thông thường phải là "\\" và mỗi dấu gạch chéo ngược phải được biểu thị là "\\" bên trong một python thông thường chuỗi chữ. Trong RES đó là các dấu gạch chéo ngược nhiều lần, điều này dẫn đến rất nhiều dấu gạch chéo ngược lặp đi lặp lại khiến các chuỗi kết quả khó hiểu.

Giải pháp là sử dụng ký hiệu chuỗi thô của Python cho các biểu thức thông thường; BackSlashes không được xử lý theo bất kỳ cách đặc biệt nào trong một chuỗi theo nghĩa đen được đặt trước với "r", vì vậy r "\ n" là một chuỗi hai tính năng chứa "\" và "n", trong khi "\ n" là một chuỗi một ký tự chứa một dòng mới. Các biểu thức thường xuyên thường xuyên sẽ được thể hiện trong mã Python bằng cách sử dụng ký hiệu chuỗi thô này.

Chuỗi thông thườngChuỗi thô
>>> s = '\\t'
>>> print ("[" + s  + "]")
>>> [\t]                // '\t' after preprocessing
2
r "ab*"
>>> s = '\\t'
>>> print ("[" + s  + "]")
>>> [\t]                // '\t' after preprocessing
1
r "\\ phần"
>>> s = '\\t'
>>> print ("[" + s  + "]")
>>> [\t]                // '\t' after preprocessing
4
r "\ w+\ s+\ 1"

Làm thế nào để bạn phù hợp với một dấu gạch chéo ngược trong Regex Python?

Nói tóm lại, để phù hợp với dấu gạch chéo ngược theo nghĩa đen, người ta phải viết '\\\\\\' làm chuỗi re, vì biểu thức thông thường phải là "\\" và mỗi dấu gạch chéo ngược phải được biểu thị là "\\" bên trong một python thông thường chuỗi chữ.write '\\\\' as the RE string, because the regular expression must be "\\", and each backslash must be expressed as "\\" inside a regular Python string literal.

Làm thế nào để bạn phù hợp với một dấu gạch chéo ngược trong regex?

Backslash ngăn chặn ý nghĩa đặc biệt của nhân vật mà nó đi trước, và biến nó thành một nhân vật thông thường.Để chèn dấu gạch chéo ngược vào mẫu biểu thức thông thường của bạn, hãy sử dụng Double Backslash ('\\').use a double backslash ('\\').

\\ có nghĩa là gì trong regex?

Ký tự dấu gạch chéo ngược (\) trong một biểu thức chính quy chỉ ra rằng ký tự theo sau nó là một ký tự đặc biệt (như trong bảng sau) hoặc nên được giải thích theo nghĩa đen.Để biết thêm thông tin, xem Escapes nhân vật.Nhân vật thoát khỏi.Sự mô tả.Họa tiết.indicates that the character that follows it either is a special character (as shown in the following table), or should be interpreted literally. For more information, see Character Escapes. Escaped character. Description. Pattern.

Làm thế nào để Python xử lý dấu gạch chéo ngược?

Trong các chuỗi Python, dấu gạch chéo ngược "\" là một nhân vật đặc biệt, còn được gọi là nhân vật "Escape".Nó được sử dụng để thể hiện 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 sự trở lại vận chuyển.Ngược lại, tiền tố một ký tự đặc biệt với "\" biến nó thành một ký tự thông thường.prefixing a special character with "\" turns it into an ordinary character.