Tiếng Việt

Văn bản & công cụ hàng ngày · Bộ công cụ văn bản

Nghĩa đen hay biểu thức chính quy? Tại sao một dấu chấm trong cụm từ tìm kiếm của bạn có thể thay đổi mọi kết quả

· Tại sao nó quan trọng

find-and-replace regular-expressions text-editing

Số phiên bản có dấu chấm có các đường dẫn tìm kiếm theo nghĩa đen và biểu thức chính quy riêng biệt
Hình minh họa vector ToolAcre gốc

Giải thích những ký tự nào mang ý nghĩa trong biểu thức chính quy, điều gì xảy ra khi 'a.b' hoặc 'v1.2 (beta)' được coi là mẫu và tại sao chế độ chữ thoát khỏi mọi thứ phải là chế độ mặc định.

Tìm kiếm 'v1.2' và khớp 'v102' — cách một công cụ sử dụng biểu thức chính quy đầu tiên lặng lẽ biến dấu câu thành ký tự đại diện

Nhân viên hỗ trợ thay đổi `v1.2` trong ghi chú phát hành có thể mong đợi một cách hợp lý rằng bốn ký tự đó sẽ xác định một nhãn phiên bản. Tuy nhiên, khi bật Regex, dấu chấm có nghĩa là bất kỳ ký tự nào ngoại trừ dấu ngắt dòng. Do đó, mẫu có thể khớp với `v102`, `v1-2` hoặc `v1x2` và Thay thế tất cả có thể thay đổi các mục không bao giờ là một phần của bản phát hành được yêu cầu.

Sự thất bại này diễn ra lặng lẽ vì mẫu này hợp lệ. Không có thông báo lỗi để phân biệt ký tự đại diện có chủ ý với dấu câu được sao chép từ tên tệp. Cảnh báo đầu tiên có thể là số lượng thay thế lớn bất ngờ. Khi nhiệm vụ là thay thế chính xác văn bản đã biết, dấu câu phải là dữ liệu chứ không phải là hướng dẫn cho công cụ tìm kiếm.

Các siêu ký tự - dấu chấm, dấu ngoặc đơn, dấu ngoặc đơn, dấu cộng, dấu sao, dấu chấm hỏi, dấu gạch ngang, dấu mũ, đô la và dấu gạch chéo ngược, cũng như chức năng của từng ký tự

Trong chế độ biểu thức chính quy JavaScript, dấu chấm là ký tự đại diện; dấu ngoặc vuông xác định một lớp ký tự; dấu ngoặc đơn tạo một nhóm; dấu cộng, dấu sao và dấu hỏi kiểm soát sự lặp lại; và một cái ống đưa ra những lựa chọn thay thế. Dấu mũ và ký hiệu đô la neo mẫu vào đầu hoặc cuối toàn bộ văn bản trong công cụ này vì chế độ nhiều dòng không được bật.

Dấu gạch chéo ngược thay đổi cách đọc ký tự sau và dấu ngoặc nhọn có thể biểu thị số lần lặp lại. Các ký hiệu này chỉ quan trọng ở những vị trí mà ngữ pháp biểu thức chính quy xử lý chúng một cách đặc biệt, vì vậy việc ghi nhớ một danh sách sẽ kém tin cậy hơn việc quyết định chế độ nào mà công việc cần. Nếu bạn khớp nhãn, đoạn đường dẫn hoặc tên tệp được cung cấp, hãy bắt đầu theo nghĩa đen.

Các siêu ký tự quan trọng trong chế độ biểu thức chính quy JavaScript

Chế độ chữ làm cho tìm kiếm có nghĩa là những gì đã được gõ. ToolAcre thoát khỏi siêu ký tự biểu thức chính quy trước khi biên dịch tìm kiếm, do đó `v1.2 (beta)` khớp với chính dấu chấm, dấu cách và dấu ngoặc đơn. Nó không biến cụm từ thành ký tự đại diện theo sau là một nhóm chụp và nó vẫn tìm thấy mọi lần xuất hiện chính xác trên văn bản.

Việc thoát đó chỉ xảy ra ở phía tìm kiếm. Trường thay thế vẫn tuân theo quy tắc chuỗi thay thế JavaScript, trong đó `$&` chèn văn bản phù hợp và `$$` tạo ra một ký hiệu đô la. Do đó, tìm kiếm theo nghĩa đen là mặc định an toàn để xác định văn bản, nhưng một thay thế có chứa ký hiệu đô la vẫn đáng được xem xét có chủ ý trước khi chọn Thay thế tất cả.

Chế độ Regex - khi bạn muốn có sức mạnh và cách tự mình thoát khỏi từng ký tự

Chế độ Regex rất hữu ích khi một số biểu mẫu phải khớp với một quy tắc. Một mẫu có thể nhắm mục tiêu một phạm vi chữ số, dấu câu tùy chọn hoặc các lựa chọn thay thế mà không liệt kê mọi cách viết nguồn. Chỉ bật Regex khi sự thay đổi đó là có chủ ý, sau đó thoát khỏi một ký tự đặc biệt bằng dấu gạch chéo ngược khi nó phải giữ nguyên ý nghĩa thông thường, chẳng hạn như `.` cho dấu chấm.

Công cụ này biên dịch mẫu bằng cú pháp biểu thức chính quy JavaScript và luôn áp dụng mẫu đó trên toàn cầu. Việc xóa phân biệt chữ hoa chữ thường sẽ thêm tính năng khớp không phân biệt chữ hoa chữ thường, nhưng các cờ nhiều dòng, dấu chấm, cố định và unicode không được cung cấp. Cú pháp không hợp lệ được báo cáo mà không thay đổi văn bản. Một mẫu hợp lệ nhưng quá rộng vẫn chạy, do đó, việc biên dịch thành công không phải là bằng chứng về một tập hợp so khớp an toàn.

Ví dụ đã hoạt động - thay thế 'config.yml (cũ)' trên các ghi chú phát hành ở chế độ chữ, sau đó thử tương tự ở chế độ biểu thức chính quy để thấy sự khác biệt

Hãy xem xét các ghi chú phát hành có chứa `Load config.yml (old)`, `Archive configXyml old` và `Keep config.yml (new)`. Khi tắt Regex, hãy tìm kiếm `config.yml (old)` và thay thế bằng `config.yml (legacy)`. Chính xác thì cụm từ đầu tiên thay đổi vì dấu chấm và dấu ngoặc đơn được thoát trước khi mẫu được biên dịch.

Bật Regex và gửi cùng một tìm kiếm không thoát. Dấu chấm có thể sử dụng một ký tự khác, trong khi nhóm dấu ngoặc đơn `old` thay vì khớp với dấu ngoặc đơn theo nghĩa đen, do đó dòng dự định không còn khớp như được viết. Một biểu thức chính quy tương đương cần `config.yml (old)`. Phiên bản chữ ngắn hơn, rõ ràng hơn và phù hợp hơn với tác vụ văn bản chính xác này.

Các lỗi phổ biến — dấu cách ở cuối hộp tìm kiếm, nhầm lẫn cả từ và chữ và quên kiểm tra số lượng thay thế

Các khoảng trắng ở cuối rất dễ bị bỏ qua vì trường tìm kiếm mang lại cho chúng ít sức nặng về mặt hình ảnh, tuy nhiên chế độ theo nghĩa đen vẫn giữ nguyên chúng. Tìm kiếm `beta ` sẽ không khớp với `beta` ở cuối dòng. Kiểm tra ranh giới trường khi thuật ngữ hiển thị rõ ràng không có từ thay thế nào và tránh thêm dấu cách chỉ để tách văn bản được sao chép khỏi văn xuôi xung quanh.

Toàn bộ từ không phải là một tên khác cho nghĩa đen. Nó bao bọc tìm kiếm được biên dịch trong các ranh giới từ, dựa trên ASCII ở đây và có thể không thành công xung quanh dấu câu hoặc thuật ngữ có dấu. Đồng thời kiểm tra số lượng thay thế sau mỗi lần chạy và sử dụng Hoàn tác khi có bất ngờ. Số lượng là bằng chứng về phạm vi chứ không phải là một thông điệp thành công mang tính trang trí.

Các lỗi thường gặp: dấu cách, ranh giới toàn bộ từ và cú pháp thay thế

Trang này không cung cấp hướng dẫn đầy đủ về cờ biểu thức chính quy. ToolAcre sử dụng đối sánh toàn cục và đối sánh không phân biệt chữ hoa chữ thường, trong khi các neo vẫn đề cập đến toàn bộ văn bản thay vì từng dòng. Các mẫu được sao chép từ công cụ có cờ nội tuyến, lớp POSIX hoặc cú pháp khác có thể không biên dịch được hoặc có thể có ý nghĩa khác trong trình duyệt.

Các nhóm chụp được hỗ trợ nên đường viền cần chỉnh sửa thay vì nói rằng chúng nằm ngoài công cụ. Trong chế độ Regex, các nhóm có thể được tham chiếu bằng `$1`, `$2` và các số mới hơn để thay thế. Khả năng đó tách biệt với tìm kiếm theo nghĩa đen và với các điều khiển cờ giới hạn; chỉ sử dụng nó khi việc tái cấu trúc văn bản phù hợp là mục tiêu thực tế.

Cờ bị hạn chế ở đây, trong khi các nhóm chụp được hỗ trợ thay thế

Quy tắc thực tế rất đơn giản: tắt Regex khi thay thế một phiên bản, tên tệp, nhãn sản phẩm hoặc đoạn câu đã biết. Chế độ chữ tự động thoát khỏi các ký tự đặc biệt, giữ nguyên dấu câu xác định mục tiêu. Chỉ bật Regex khi bạn có thể nêu rõ biến thể nào mà mẫu sẽ chấp nhận và tại sao tìm kiếm chính xác là không đủ.

Trước khi thực hiện ghi chú phát hành đã chỉnh sửa, hãy so sánh số lượng được báo cáo với số lượng thay đổi bạn mong đợi và kiểm tra kết quả. ToolAcre giữ nguyên các mẫu không hợp lệ và cung cấp tính năng Hoàn tác cho một mẫu hợp lệ đã đi quá xa. Những biện pháp bảo vệ đó có ích nhưng việc chọn chế độ theo nghĩa đen cho công việc theo nghĩa đen sẽ ngăn cản việc so khớp rộng trước khi nó diễn ra.