Teks & alat sehari-hari · Perangkat Teks
Cara kerja pencarian seluruh kata: batasan kata dan masalah kucing|anjing
· Cara kerjanya
ekspresi reguler temukan-dan-ganti pengeditan teks
Menjelaskan batasan kata dalam ekspresi reguler JavaScript, mengapa 'cat' tidak boleh cocok di dalam 'concatenate', dan mengapa pergantian seperti cat|dog harus dikelompokkan sebelum batas ditambahkan.
Penggantian nama yang mengubah 'gabungan' — mengapa pencarian dan penggantian kata yang pendek akan merusak kata yang lebih panjang
Penggantian nama produk terlihat tidak berbahaya sampai nama pendek muncul di dalam kata-kata yang tidak berhubungan. Mengganti setiap kemunculan `cat` dengan `lynx` akan mengubah `concatenate` menjadi `conlynxenate`, meskipun tidak ada editor yang bermaksud mengganti nama sebagian kata kerja tersebut. Jumlah kecocokan saja tidak dapat melindungi dokumen ketika aturan pencarian terlalu luas.
Pencocokan seluruh kata mempersempit aturan sebelum penggantian terjadi. Di ToolAcre, mengaktifkan Seluruh kata membuat `cat` mandiri memenuhi syarat dan membiarkan huruf yang sama di dalam `concatenate` tidak tersentuh. Perbedaannya bersifat struktural dan bukan berdasarkan kamus: mesin ekspresi reguler memeriksa karakter tepat di samping setiap kemungkinan kecocokan.
Maksud \b — posisi lebar nol antara karakter kata dan karakter non-kata
Dalam ekspresi reguler JavaScript, `` menandai batas kata dengan lebar nol. Tidak menggunakan huruf, spasi atau tanda baca. Sebaliknya, ini berhasil pada posisi di mana satu sisi merupakan karakter kata dan sisi lainnya bukan, termasuk awal atau akhir teks ketika karakter yang berdekatan memenuhi syarat sebagai karakter kata.
Kategori JavaScript `w` menyediakan karakter kata yang relevan untuk penerapan ini: ASCII huruf, angka, dan garis bawah. Oleh karena itu `cat` cocok dengan `cat` di samping spasi, koma, atau akhir baris, namun tidak cocok dengan segmen `cat` di dalam `concatenate`, karena kedua sisi segmen tersebut berlanjut melalui karakter kata dan tidak ada batas di sana.
Seluruh kata dalam mode literal — teks pencarian di-escape terlebih dahulu, lalu dibungkus dalam batas
Dengan Regex dimatikan, ToolAcre pertama-tama lolos dari setiap metakarakter ekspresi reguler dalam teks pencarian. Titik tetap merupakan periode literal, tanda kurung tetap menjadi tanda kurung literal, dan tanda tambah tetap menjadi tanda tambah. Hanya setelah langkah pelolosan itu, Seluruh kata membungkus sumber yang dihasilkan, sehingga tanda baca pengguna tidak bisa diam-diam menjadi sintaksis regex.
Pembungkusnya adalah `(?:… )` tanpa spasi yang ditampilkan: bagian dalam `(?:…)` adalah grup yang tidak dapat ditangkap. Untuk literal sederhana seperti `cat`, efeknya setara dengan `cat`. Pengelompokan tetap penting karena satu jalur kompilasi harus menangani istilah sederhana dan alternatif yang lebih rumit dengan aman tanpa mengubah penomoran grup tangkapan.
Seluruh kata dalam mode regex — mengapa cat|dog harus dibatasi sebagai grup, atau batas hanya mengikat satu cabang saja
Mode regex membiarkan pola yang dimasukkan tetap utuh, namun Seluruh kata masih mengelompokkannya sebelum menambahkan batas. Untuk `cat|dog`, ToolAcre menyusun bentuk konseptual `(?:cat|dog)`. Oleh karena itu, kedua alternatif harus dimulai dan diakhiri pada batas kata, sehingga `cat` yang berdiri sendiri dan `dog` yang berdiri sendiri cocok dengan aturan yang sama.
Tanpa grup tersebut, `cat|dog` akan terpecah menjadi dua cabang: batas kiri hanya akan membatasi `cat`, sedangkan batas kanan hanya akan membatasi `dog`. Pergantian memiliki prioritas lebih rendah dibandingkan urutan di sekitarnya. Pengelompokan inilah yang menerapkan kedua pernyataan batas pada keseluruhan pilihan alih-alih mendistribusikan satu pernyataan secara tidak merata.
Contoh praktis — mengganti nama produk di seluruh dokumen dengan Whole word aktif, dan memeriksa jumlah penggantian sesuai ekspektasi
Tempelkan bagian representatif yang berisi `cat`, `dog`, `concatenate`, `dogged` dan tanda baca seperti `cat, dog.` Masukkan `cat|dog`, aktifkan Regex dan Whole word, dan jalankan Ganti semua dengan nama produk baru. Dua kata binatang yang berdiri sendiri harus diubah; kata-kata yang lebih panjang harus tetap sama seperti aslinya.
Baca jumlah penggantian yang dilaporkan sebelum menerima pengeditan. Jika dokumen memiliki tiga referensi mandiri yang diketahui namun alat melaporkan dua atau dua belas, pilih Batalkan dan periksa konteks sampel. ToolAcre menghitung kecocokan sebelum memanggil penggantian string standar, sehingga total yang ditampilkan adalah pemeriksaan praktis pada aturan pencarian yang sebenarnya Anda kompilasi.
Batasan kata yang mengejutkan Anda — karakter kata JavaScript adalah ASCII huruf, angka, dan garis bawah, jadi kata beraksen dan non-Latin perlu diuji
Batasan ini tidak menerapkan kamus multibahasa atau algoritma segmentasi teks Unicode. Karena huruf beraksen dan skrip non-Latin berada di luar kategori gaya kata ASCII yang digunakan di sini, Seluruh kata dapat menghasilkan nol atau menghasilkan posisi tepi yang mengejutkan untuk istilah seperti `café`. Tanda baca di dalam istilah penelusuran dapat menyebabkan ketidakcocokan yang sama.
Uji bahasa dan ejaan yang tepat sebelum melakukan pengeditan massal, terutama untuk nama yang mengandung aksen, apostrof, atau tanda hubung. Penegasan batas hanya membandingkan kategori karakter yang berdekatan; ia tidak mengetahui apakah tipografi membentuk satu kata manusia. Jika sampel gagal, gunakan regex yang sengaja dirancang untuk lingkungan tersebut daripada mempercayai kotak centang.
Yang membuat Anda terkejut dengan batasan kata JavaScript: karakter kata bergaya ASCII bukanlah kata linguistik
Alat ini menyediakan opsi peka huruf besar-kecil yang terpisah, bertentangan dengan implikasi bahwa penanganan kasus tidak ada di antarmuka. Menghapusnya akan menambahkan tanda case-insensitive pada JavaScript. Namun, implementasinya hanya menggunakan pencocokan global ditambah ketidakpekaan huruf opsional; itu tidak menambahkan tanda Unicode, multiline, dot-all, sticky atau lainnya.
Artikel ini juga tidak mengubah `` menjadi batasan Unicode atau menyelesaikan tokenisasi khusus bahasa. JavaScript property escapes bukan pengganti di sini karena alat ini tidak mengkompilasi pola dengan flag Unicode. Untuk pekerjaan editorial multibahasa, buat kasus uji eksplisit dan pilih pola yang didukung oleh mesin browser yang digunakan.
Opsi kasus ada di alat; Batasan kata yang sadar Unicode tidak
Seluruh kata adalah aturan komposisi, bukan mesin pengganti kedua. Mode literal lolos dari pencarian; mode regex mempertahankannya; kemudian kelompok non-penangkap yang sama dan dua batas mengelilingi hasil mana pun. Urutan tersebut melindungi tanda baca literal dan membuat alternatif ekspresi reguler seperti `cat|dog` berperilaku sebagai satu ekspresi terbatas.
Gunakan opsi ketika istilah gaya ASCII mandiri adalah target yang dituju, lalu perlakukan penghitungan penggantian dan kontrol Undo sebagai perlindungan, bukan hiasan. Buka Temukan dan ganti ToolAcre, uji pergantian terhadap contoh yang berdiri sendiri dan tersemat, dan hanya terapkan ke seluruh dokumen setelah contoh tersebut berperilaku seperti yang diharapkan.