Trận đấu Python không có trường hợp

Thông thường, các chế độ phù hợp được chỉ định bên ngoài biểu thức chính quy. Trong một ngôn ngữ lập trình, bạn chuyển chúng dưới dạng cờ cho hàm tạo biểu thức chính quy hoặc nối chúng vào biểu thức chính quy. Trong một ứng dụng, bạn sẽ chuyển các nút hoặc hộp kiểm thích hợp. Bạn có thể tìm thấy các chi tiết cụ thể trong phần công cụ và ngôn ngữ của trang web này

Đôi khi, công cụ hoặc ngôn ngữ không cung cấp khả năng chỉ định các tùy chọn phù hợp. Chuỗi tiện dụng. phương thức Match[] trong Java không nhận tham số cho các tùy chọn khớp như Mẫu. biên dịch[] làm. Hoặc, hương vị regex có thể hỗ trợ các chế độ phù hợp không được hiển thị dưới dạng cờ bên ngoài. Các chức năng regex trong R đã bỏ qua. trường hợp là tùy chọn duy nhất của họ, mặc dù thư viện PCRE bên dưới có nhiều chế độ phù hợp hơn bất kỳ chế độ nào khác được thảo luận trong hướng dẫn này

Trong tình huống đó, bạn có thể thêm các công cụ sửa đổi chế độ sau vào đầu biểu thức chính quy. Để chỉ định nhiều chế độ, chỉ cần đặt chúng lại với nhau như trong [?ismx]

  • [?i] làm cho trường hợp regex không nhạy cảm
  • [?c] làm cho trường hợp regex trở nên nhạy cảm. Chỉ được hỗ trợ bởi Tcl
  • [?x] bật chế độ giãn cách tự do
  • [?t] tắt chế độ khoảng cách tự do. Chỉ được hỗ trợ bởi Tcl
  • [?xx] bật chế độ khoảng cách tự do, cả trong các lớp ký tự. Được hỗ trợ bởi Perl 5. 26 và PCRE2 10. 30
  • [?s] cho “chế độ một dòng” làm cho dấu chấm khớp với tất cả các ký tự, bao gồm cả ngắt dòng. Không được hỗ trợ bởi Ruby. Trong Tcl, [?s] cũng chỉ khớp dấu mũ và đô la ở đầu và cuối chuỗi
  • [?m] cho “chế độ nhiều dòng” làm cho dấu mũ và đô la khớp nhau ở đầu và cuối mỗi dòng trong chuỗi chủ đề. Trong Ruby, [?m] làm cho dấu chấm khớp với tất cả các ký tự mà không ảnh hưởng đến dấu mũ và đô la luôn khớp ở đầu và cuối mỗi dòng trong Ruby. Trong Tcl, [?m] cũng ngăn dấu chấm khớp với ngắt dòng
  • [?p] trong Tcl làm cho dấu mũ và đô la khớp nhau ở đầu và cuối mỗi dòng, đồng thời làm ngắt dòng khớp dấu chấm
  • [?w] trong Tcl làm cho dấu mũ và đô la chỉ khớp ở đầu và cuối chuỗi chủ đề, đồng thời ngăn dấu chấm khớp với ngắt dòng
  • [?n] biến tất cả các nhóm chưa đặt tên thành các nhóm không bắt giữ. Chỉ được hỗ trợ bởi. NET, XRegExp và hương vị JGsoft. Trong Tcl, [?n] giống như [?m]
  • [?J] cho phép tên nhóm trùng lặp. Chỉ được hỗ trợ bởi PCRE và các ngôn ngữ sử dụng nó như Delphi, PHP và R
  • [?U] bật "chế độ không tham lam", chế độ này sẽ chuyển cú pháp cho các bộ định lượng tham lam và lười biếng. Vậy [?U]a* lười biếng và [?U]a*? . Chỉ được hỗ trợ bởi PCRE và các ngôn ngữ sử dụng nó. Việc sử dụng nó không được khuyến khích mạnh mẽ vì nó gây nhầm lẫn ý nghĩa của cú pháp định lượng tiêu chuẩn
  • [?d] tương ứng với UNIX_LINES trong Java, làm cho dấu chấm, dấu mũ và đô la chỉ coi ký tự xuống dòng \n là dấu ngắt dòng, thay vì nhận dạng tất cả các ký tự ngắt dòng từ tiêu chuẩn Unicode. Việc chúng khớp hay không khớp [tại] ngắt dòng tùy thuộc vào [?s] và [?m]
  • [?b] làm cho Tcl diễn giải biểu thức chính quy dưới dạng POSIX BRE
  • [?e] làm cho Tcl diễn giải biểu thức chính quy dưới dạng POSIX ERE
  • [?q] làm cho Tcl diễn giải biểu thức chính quy dưới dạng chuỗi ký tự [trừ các ký tự [?q]]
  • [?X] làm cho các chữ cái thoát có dấu gạch chéo ngược bị lỗi nếu tổ hợp đó không phải là mã thông báo biểu thức chính quy hợp lệ. Chỉ được hỗ trợ bởi PCRE và các ngôn ngữ sử dụng nó

Các hương vị regex hiện đại cho phép bạn chỉ áp dụng các công cụ sửa đổi cho một phần của biểu thức chính quy. Nếu bạn chèn công cụ sửa đổi [?ism] vào giữa biểu thức chính quy thì công cụ sửa đổi đó chỉ áp dụng cho phần của biểu thức chính quy ở bên phải của công cụ sửa đổi. Với những hương vị này, bạn có thể tắt các chế độ bằng cách đặt trước chúng một dấu trừ. Tất cả các chế độ sau dấu trừ sẽ bị tắt. e. g. [?i-sm] bật phân biệt chữ hoa chữ thường và tắt cả chế độ một dòng và chế độ nhiều dòng

Nếu một hương vị không thể áp dụng các công cụ sửa đổi cho chỉ một phần của biểu thức chính quy thì nó sẽ coi các công cụ sửa đổi ở giữa biểu thức chính là lỗi. Python là một ngoại lệ cho điều này. Trong Python, việc đặt một công cụ sửa đổi ở giữa biểu thức chính quy sẽ ảnh hưởng đến toàn bộ biểu thức chính quy. Vì vậy, trong Python, [?i]caseless và caseless[?i] đều không phân biệt chữ hoa chữ thường. Trong tất cả các hương vị khác, công cụ sửa đổi chế độ theo dõi không có tác dụng hoặc bị lỗi

Bạn có thể nhanh chóng kiểm tra xem hương vị biểu thức chính quy mà bạn đang sử dụng xử lý các công cụ sửa đổi chế độ như thế nào. Biểu thức chính quy [?i]te[?-i]st phải khớp với test và TEst, nhưng không khớp với test hoặc TEST

Khoảng thời gian sửa đổi

Thay vì sử dụng hai công cụ sửa đổi, một để bật một tùy chọn và một để tắt tùy chọn đó, bạn sử dụng một công cụ sửa đổi span. [?i]caseless[?-i]cased[?i]caseless tương đương với [?i]caseless[?-i. có vỏ] không có vỏ. Cú pháp này giống với cú pháp của nhóm không bắt giữ [?. tập đoàn]. Bạn có thể coi một nhóm không bắt giữ là một khoảng bổ trợ không thay đổi bất kỳ bộ bổ trợ nào. Nhưng có những hương vị, như JavaScript, Python và Tcl hỗ trợ các nhóm không bắt giữ ngay cả khi chúng không hỗ trợ các nhịp sửa đổi. Giống như một nhóm không bắt giữ, khoảng thời gian sửa đổi không tạo phản hồi

Các khoảng thời gian của công cụ sửa đổi được hỗ trợ bởi tất cả các hương vị regex cho phép bạn sử dụng các công cụ sửa đổi chế độ ở giữa biểu thức chính quy và chỉ bởi những hương vị đó. Chúng bao gồm động cơ JGsoft,. NET, Java, Perl và PCRE, PHP, Delphi và R

Chủ Đề