Văn bản & công cụ hàng ngày · Bộ công cụ văn bản
Cách hoạt động của tìm kiếm toàn bộ từ: ranh giới từ và vấn đề mèo|chó
· Cách thức hoạt động
biểu thức chính quy find-and-replace text-editing
Giải thích ranh giới từ trong cụm từ thông dụng JavaScript, tại sao 'cat' không được khớp bên trong 'concatenate' và tại sao một từ thay thế như cat|dog phải được nhóm lại trước khi thêm ranh giới.
Việc đổi tên đã thay đổi 'nối' - tại sao việc tìm và thay thế một từ ngắn lại làm hỏng các từ dài hơn
Việc đổi tên sản phẩm có vẻ vô hại cho đến khi một tên ngắn xuất hiện bên trong các từ không liên quan. Việc thay thế mỗi lần xuất hiện của `cat` bằng `lynx` sẽ thay đổi `concatenate` thành `conlynxenate`, mặc dù không có biên tập viên nào có ý định đổi tên một phần của động từ đó. Chỉ số lượng kết quả trùng khớp không thể bảo vệ tài liệu khi quy tắc tìm kiếm quá rộng.
Đối sánh toàn bộ từ sẽ thu hẹp quy tắc trước khi bất kỳ sự thay thế nào xảy ra. Trong ToolAcre, việc bật Toàn bộ từ sẽ khiến `cat` độc lập đủ điều kiện trong khi không chạm vào các chữ cái giống nhau bên trong `concatenate`. Sự khác biệt nằm ở cấu trúc chứ không phải dựa trên từ điển: công cụ biểu thức chính quy kiểm tra các ký tự ngay bên cạnh mỗi kết quả khớp có thể có.
\b nghĩa là gì - vị trí có độ rộng bằng 0 giữa ký tự từ và ký tự không phải từ
Trong biểu thức chính quy JavaScript, `` đánh dấu ranh giới từ có độ rộng bằng 0. Nó không sử dụng chữ cái, dấu cách hoặc dấu câu. Thay vào đó, nó thành công ở vị trí mà một bên là ký tự từ còn bên kia không phải là ký tự bắt đầu hoặc kết thúc văn bản khi ký tự liền kề đủ tiêu chuẩn là ký tự từ.
Danh mục `w` của JavaScript cung cấp các ký tự từ có liên quan cho việc triển khai này: ASCII chữ cái, chữ số và dấu gạch dưới. Do đó, `cat` khớp với `cat` bên cạnh dấu cách, dấu phẩy hoặc cuối dòng, nhưng không khớp với phân đoạn `cat` bên trong `concatenate`, vì cả hai bên của phân đoạn đó tiếp tục thông qua các ký tự từ và không có ranh giới tồn tại ở đó.
Toàn bộ từ ở chế độ chữ — văn bản tìm kiếm được thoát trước tiên, sau đó được bao bọc trong các ranh giới
Khi Regex bị tắt, ToolAcre trước tiên sẽ thoát khỏi mọi siêu ký tự biểu thức chính quy trong văn bản tìm kiếm. Dấu chấm vẫn là dấu chấm theo nghĩa đen, dấu ngoặc đơn vẫn là dấu ngoặc đơn và dấu cộng vẫn là dấu cộng. Chỉ sau bước thoát đó, Toàn bộ từ mới bao bọc nguồn kết quả, do đó dấu câu của người dùng không thể âm thầm trở thành cú pháp biểu thức chính quy.
Trình bao bọc là `(?:… )` không có khoảng trống hiển thị: `(?:…)` bên trong là nhóm không thu giữ. Đối với chữ đơn giản như `cat`, hiệu ứng tương đương với `cat`. Việc phân nhóm vẫn quan trọng vì một đường dẫn biên dịch phải xử lý an toàn các thuật ngữ đơn giản và các lựa chọn thay thế phức tạp hơn mà không thay đổi cách đánh số nhóm thu thập.
Toàn bộ từ trong chế độ biểu thức chính quy - tại sao cat|dog phải được giới hạn thành một nhóm hoặc ranh giới chỉ liên kết với một nhánh
Chế độ Regex giữ nguyên mẫu đã nhập nhưng Toàn bộ từ vẫn nhóm mẫu đó trước khi thêm ranh giới. Đối với `cat|dog`, ToolAcre biên dịch dạng khái niệm `(?:cat|dog)`. Do đó, cả hai lựa chọn thay thế phải bắt đầu và kết thúc ở ranh giới từ, do đó `cat` độc lập và `dog` độc lập phải khớp với nhau theo cùng một quy tắc.
Nếu không có nhóm đó, `cat|dog` sẽ chia thành hai nhánh: ranh giới bên trái sẽ chỉ ràng buộc `cat`, trong khi ranh giới bên phải sẽ chỉ ràng buộc `dog`. Sự thay thế có độ ưu tiên thấp hơn trình tự xung quanh. Nhóm là cách áp dụng cả hai xác nhận ranh giới cho toàn bộ lựa chọn thay vì phân phối một xác nhận không đồng đều.
Ví dụ đã hoạt động - đổi tên một sản phẩm trên một tài liệu với Toàn bộ từ được bật và kiểm tra số lượng thay thế so với mong đợi
Dán đoạn văn đại diện chứa `cat`, `dog`, `concatenate`, `dogged` và dấu câu như `cat, dog.` Nhập `cat|dog`, bật Regex và Toàn bộ từ rồi chạy Thay thế tất cả bằng tên sản phẩm mới. Hai từ động vật độc lập nên thay đổi; những từ dài hơn sẽ vẫn giữ nguyên như cũ.
Đọc số lượng thay thế được báo cáo trước khi chấp nhận chỉnh sửa. Nếu tài liệu có ba tham chiếu độc lập đã biết nhưng công cụ báo cáo hai hoặc mười hai, hãy chọn Hoàn tác và kiểm tra ngữ cảnh mẫu. ToolAcre đếm các kết quả trùng khớp trước khi gọi thay thế chuỗi tiêu chuẩn, do đó tổng số được hiển thị là một kiểm tra thực tế về quy tắc tìm kiếm mà bạn thực sự đã biên soạn.
Khi ranh giới từ làm bạn ngạc nhiên — các ký tự từ của JavaScript là ASCII chữ cái, chữ số và dấu gạch dưới, vì vậy các từ có dấu và không phải tiếng Latinh cần được kiểm tra
Các ranh giới này không triển khai từ điển đa ngôn ngữ hoặc thuật toán phân đoạn văn bản Unicode. Vì các chữ cái có dấu và chữ viết không phải tiếng Latinh nằm ngoài danh mục từ kiểu ASCII được sử dụng ở đây nên Toàn bộ từ có thể trả về 0 hoặc tạo ra các vị trí cạnh đáng ngạc nhiên cho các thuật ngữ như `café`. Dấu câu bên trong cụm từ tìm kiếm có thể gây ra sự không khớp tương tự.
Kiểm tra ngôn ngữ và chính tả chính xác trước khi chỉnh sửa hàng loạt, đặc biệt đối với những tên có dấu trọng âm, dấu nháy đơn hoặc dấu gạch nối. Xác nhận ranh giới chỉ so sánh các loại ký tự liền kề; nó không biết liệu kiểu chữ có tạo thành một từ của con người hay không. Nếu mẫu không thành công, hãy sử dụng biểu thức chính quy được thiết kế có chủ ý cho những môi trường xung quanh đó thay vì tin cậy vào hộp kiểm.
Nơi JavaScript ranh giới từ làm bạn ngạc nhiên: ký tự từ kiểu ASCII không phải là từ ngôn ngữ
Công cụ này cung cấp một tùy chọn Phân biệt chữ hoa chữ thường riêng biệt, trái ngược với bất kỳ hàm ý nào rằng việc xử lý chữ hoa chữ thường không có trong giao diện. Việc xóa nó sẽ thêm cờ không phân biệt chữ hoa chữ thường của JavaScript. Tuy nhiên, việc triển khai chỉ sử dụng đối sánh toàn cục cộng với tính không phân biệt chữ hoa chữ thường tùy chọn; nó không thêm các cờ Unicode, nhiều dòng, dấu chấm, dính hoặc các cờ khác.
Bài viết này cũng không biến `` thành ranh giới nhận biết Unicode hoặc giải quyết vấn đề mã hóa theo ngôn ngữ cụ thể. JavaScript các lối thoát thuộc tính không thể thay thế ở đây vì công cụ này không biên dịch các mẫu bằng cờ Unicode. Đối với công việc biên tập đa ngôn ngữ, hãy thiết lập các trường hợp thử nghiệm rõ ràng và chọn mẫu được hỗ trợ bởi công cụ trình duyệt đang sử dụng.
Tùy chọn trường hợp tồn tại trong công cụ; Ranh giới từ nhận biết Unicode không
Toàn bộ từ là một quy tắc sáng tác, không phải là công cụ thay thế thứ hai. Chế độ chữ thoát khỏi tìm kiếm; chế độ biểu thức chính quy bảo tồn nó; thì kết quả là cùng một nhóm không bắt giữ và hai ranh giới bao quanh. Thứ tự đó bảo vệ dấu câu theo nghĩa đen và làm cho các lựa chọn thay thế biểu thức chính quy như `cat|dog` hoạt động như một biểu thức giới hạn.
Sử dụng tùy chọn khi các thuật ngữ kiểu ASCII độc lập là mục tiêu dự kiến, sau đó coi số lần thay thế và kiểm soát Hoàn tác là biện pháp bảo vệ thay vì trang trí. Mở Tìm và thay thế của ToolAcre, kiểm tra phương án thay thế dựa trên cả ví dụ độc lập và ví dụ được nhúng và chỉ áp dụng nó cho tài liệu đầy đủ sau khi các ví dụ đó hoạt động như mong đợi.