Dấu gạch chéo b trong python là gì?

Siêu ký tự \b là một mỏ neo giống như dấu mũ và ký hiệu đô la. Nó khớp ở một vị trí được gọi là “ranh giới từ”. Trận đấu này có độ dài bằng không

Có ba vị trí khác nhau đủ điều kiện là ranh giới từ

  • Trước ký tự đầu tiên trong chuỗi, nếu ký tự đầu tiên là ký tự từ
  • Sau ký tự cuối cùng trong chuỗi, nếu ký tự cuối cùng là ký tự từ
  • Giữa hai ký tự trong chuỗi, trong đó một ký tự là ký tự từ và ký tự kia không phải là ký tự từ

Chỉ cần đặt. \b cho phép bạn thực hiện tìm kiếm “chỉ toàn bộ từ” bằng cách sử dụng biểu thức chính quy ở dạng \bword\b. Một “ký tự từ” là một ký tự có thể được sử dụng để tạo thành từ. Tất cả các ký tự không phải là “ký tự từ” đều là “ký tự không phải từ”

Chính xác ký tự nào là ký tự từ phụ thuộc vào hương vị biểu thức chính quy mà bạn đang làm việc với. Trong hầu hết các hương vị, các ký tự được so khớp bởi lớp ký tự viết tắt \w là các ký tự được coi là ký tự từ theo ranh giới từ. Java là một ngoại lệ. Java hỗ trợ Unicode cho \b nhưng không hỗ trợ cho \w

Hầu hết các hương vị, ngoại trừ những hương vị được thảo luận bên dưới, chỉ có một siêu ký tự khớp với cả trước và sau một từ. Điều này là do bất kỳ vị trí nào giữa các ký tự không bao giờ có thể vừa ở đầu vừa ở cuối từ. Chỉ sử dụng một toán tử giúp bạn thực hiện mọi việc dễ dàng hơn

Vì các chữ số được coi là ký tự từ, \b4\b có thể được sử dụng để khớp với số 4 không phải là một phần của số lớn hơn. Regex này không khớp với 44 tờ a4. Vì vậy, nói “\b khớp trước và sau một dãy chữ và số” chính xác hơn là nói “trước và sau một từ”

\B là phiên bản phủ định của \b. \B khớp ở mọi vị trí mà \b không. Thực tế, \B khớp với bất kỳ vị trí nào giữa hai ký tự từ cũng như tại bất kỳ vị trí nào giữa hai ký tự không phải từ

Nhìn vào bên trong Công cụ Regex

Hãy xem điều gì sẽ xảy ra khi chúng ta áp dụng biểu thức chính quy \bis\b cho chuỗi Hòn đảo này thật đẹp. Công cụ bắt đầu với mã thông báo đầu tiên \b ở ký tự đầu tiên T. Vì mã thông báo này có độ dài bằng 0 nên vị trí trước ký tự được kiểm tra. \b khớp ở đây, bởi vì T là một ký tự Word và ký tự trước nó là khoảng trống trước khi bắt đầu chuỗi. Động cơ tiếp tục với mã thông báo tiếp theo. nghĩa đen tôi. Công cụ không tiến tới ký tự tiếp theo trong chuỗi, vì mã thông báo regex trước đó có độ dài bằng không. tôi không khớp với T, vì vậy công cụ sẽ thử lại mã thông báo đầu tiên ở vị trí ký tự tiếp theo

\b không thể khớp ở vị trí giữa T và h. Nó không thể khớp giữa h và i, và giữa i và s cũng vậy

Ký tự tiếp theo trong chuỗi là khoảng trắng. \b khớp ở đây vì khoảng trắng không phải là ký tự Word và ký tự trước đó là. Một lần nữa, động cơ tiếp tục với i không khớp với khoảng trắng

Nâng cấp một ký tự và khởi động lại bằng mã thông báo biểu thức chính quy đầu tiên, \b khớp giữa khoảng trắng và chữ i thứ hai trong chuỗi. Continuing, the regex engine finds that i matches i and s matches s. Bây giờ, động cơ sẽ cố khớp \b thứ hai ở vị trí trước l. Điều này không thành công vì vị trí này nằm giữa hai ký tự Word. Công cụ hoàn nguyên về phần đầu của biểu thức chính quy và chuyển một ký tự thành s trong đảo. Một lần nữa, \b không khớp và tiếp tục làm như vậy cho đến khi đạt đến khoảng trống thứ hai. It matches there, but matching the i fails

Nhưng \b khớp với vị trí trước i thứ ba trong chuỗi. Động cơ tiếp tục và thấy rằng i khớp với i và s khớp với s. Mã thông báo cuối cùng trong biểu thức chính quy, \b, cũng khớp với vị trí trước khoảng trắng thứ ba trong chuỗi vì khoảng trắng không phải là ký tự Word và ký tự trước nó là

Công cụ đã khớp thành công từ is trong chuỗi của chúng tôi, bỏ qua hai lần xuất hiện trước đó của ký tự i và s. Nếu chúng ta đã sử dụng biểu thức chính quy is, thì nó sẽ khớp với is trong This

Ranh giới từ Tcl

Ranh giới từ, như được mô tả ở trên, được hỗ trợ bởi hầu hết các hương vị biểu thức chính quy. Các ngoại lệ đáng chú ý là các hương vị Lược đồ POSIX và XML, hoàn toàn không hỗ trợ các ranh giới từ. Tcl sử dụng một cú pháp khác

Trong Tcl, \b khớp với một ký tự xóa lùi, giống như \x08 trong hầu hết các hương vị regex (bao gồm cả Tcl). \B khớp với một ký tự dấu gạch chéo ngược trong Tcl, giống như \\ trong tất cả các hương vị biểu thức chính quy khác (và cả Tcl nữa)

Tcl sử dụng chữ cái “y” thay vì chữ cái “b” để khớp với ranh giới từ. \y khớp với bất kỳ vị trí ranh giới từ nào, trong khi \Y khớp với bất kỳ vị trí nào không phải là ranh giới từ. Các mã thông báo biểu thức chính quy Tcl này khớp hoàn toàn giống như \b và \B trong các hương vị biểu thức chính quy kiểu Perl. Họ không phân biệt giữa đầu và cuối của một từ

Tcl có thêm hai mã thông báo ranh giới từ phân biệt giữa phần đầu và phần cuối của một từ. \m chỉ khớp ở đầu một từ. Nghĩa là, nó khớp với bất kỳ vị trí nào có một ký tự không phải từ ở bên trái của nó và một ký tự Word ở bên phải của nó. Nó cũng khớp ở đầu chuỗi nếu ký tự đầu tiên trong chuỗi là ký tự Word. \M chỉ khớp ở cuối từ. Nó khớp với bất kỳ vị trí nào có ký tự từ ở bên trái của nó và ký tự không phải từ ở bên phải của nó. Nó cũng khớp ở cuối chuỗi nếu ký tự cuối cùng trong chuỗi là ký tự Word

Công cụ biểu thức chính quy duy nhất hỗ trợ các ranh giới từ kiểu Tcl (ngoài chính Tcl) là công cụ JGsoft. Trong PowerGREP và EditPad Pro, \b và \B là ranh giới từ kiểu Perl, trong khi \y, \Y, \m và \M là ranh giới từ kiểu Tcl

Trong hầu hết các trường hợp, việc thiếu mã thông báo \m và \M không phải là vấn đề. \yword\y chỉ tìm các lần xuất hiện “toàn bộ từ” của “từ” giống như \mword\M sẽ. \Mword\m không bao giờ có thể khớp ở bất cứ đâu, vì \M không bao giờ khớp ở vị trí theo sau bởi một ký tự từ và \m không bao giờ ở vị trí đứng trước một ký tự. Nếu biểu thức chính quy của bạn cần khớp với các ký tự trước hoặc sau \y, bạn có thể dễ dàng chỉ định trong biểu thức chính quy xem các ký tự này phải là ký tự từ hay ký tự không phải từ. Muốn ghép từ nào thì \y\w+\y cũng ra kết quả như \m. +\M. Sử dụng \w thay vì dấu chấm sẽ tự động giới hạn \y đầu tiên ở đầu từ và \y thứ hai ở cuối từ. Lưu ý rằng \y. +\y sẽ không hoạt động. Biểu thức chính quy này khớp với từng từ và cả từng chuỗi ký tự không phải từ giữa các từ trong chuỗi chủ đề của bạn. Điều đó nói rằng, nếu hương vị của bạn hỗ trợ \m và \M, thì công cụ biểu thức chính quy có thể áp dụng \m\w+\M nhanh hơn một chút so với \y\w+\y, tùy thuộc vào các tối ưu hóa bên trong của nó

Nếu hương vị biểu thức chính quy của bạn hỗ trợ tính năng nhìn trước và nhìn sau, bạn có thể sử dụng (? để mô phỏng \m và (?<=\w)(?. \w) để mô phỏng \M. Mặc dù dài dòng hơn một chút, nhưng các cấu trúc tìm kiếm này khớp hoàn toàn giống như các ranh giới từ của Tcl

Nếu hương vị của bạn có giao diện phía trước nhưng không có giao diện phía sau và cũng có ranh giới từ kiểu Perl, bạn có thể sử dụng \b(?=\w) để mô phỏng \m và \b(?. \w) để mô phỏng \M. \b khớp ở đầu hoặc cuối của một từ và giao diện kiểm tra xem ký tự tiếp theo có phải là một phần của từ hay không. Nếu đúng là chúng ta đang bắt đầu một từ. Mặt khác, chúng ta đang ở cuối một từ

Ranh giới từ GNU

Các phần mở rộng GNU cho các biểu thức chính quy POSIX thêm hỗ trợ cho các ranh giới từ \b và \B, như được mô tả ở trên. GNU cũng sử dụng cú pháp riêng của nó cho ranh giới đầu từ và cuối từ. \< khớp ở đầu một từ, như Tcl's \m. \> khớp ở cuối từ, như \M của Tcl

Boost cũng coi \< và \> là ranh giới từ khi sử dụng ngữ pháp ECMAScript, mở rộng, egrep hoặc awk

Ranh giới từ POSIX

Tiêu chuẩn POSIX xác định [[. ]] làm ranh giới cuối từ. Mặc dù cú pháp được mượn từ các biểu thức khung POSIX, nhưng các mã thông báo này là các ranh giới từ không liên quan gì và không thể được sử dụng bên trong các lớp ký tự. Tcl và GNU cũng hỗ trợ ranh giới từ POSIX. PCRE hỗ trợ ranh giới từ POSIX bắt đầu với phiên bản 8. 34. Boost hỗ trợ chúng trong tất cả các ngữ pháp của nó

'\ x0c là gì?

\x0c là nguồn cấp biểu mẫu ; . Bạn cũng có thể diễn đạt nó dưới dạng \f trong Python. >>> '\f' '\x0c' Trong terminal, tác dụng của \v và \f thường giống nhau.

Chữ b phía trước chuỗi Python là gì?

Trong python, ký tự 'b' trước một chuỗi được sử dụng để chỉ định chuỗi dưới dạng “chuỗi byte “.

Tiền tố b trong Python là gì?

Tiền tố b biểu thị một chuỗi byte bằng chữ . Nếu bạn thấy nó được sử dụng trong mã nguồn Python 3, biểu thức sẽ tạo đối tượng bytes, không phải đối tượng str Unicode thông thường.