Bahasa Melayu

Teks & alat harian · Kit Alat Teks

Cara carian seluruh perkataan berfungsi: sempadan perkataan dan masalah kucing|anjing

· Bagaimana ia berfungsi

regex cari-dan-ganti penyuntingan teks

Perkataan kucing dan anjing melepasi sempadan semasa bercantum kekal tidak berubah
Ilustrasi vektor ToolAcre asal

Menerangkan maksud sempadan perkataan dalam JavaScript ungkapan biasa, mengapa 'kucing' tidak boleh sepadan di dalam 'bercantum' dan mengapa selang-seli seperti kucing|anjing perlu dikumpulkan sebelum sempadan ditambahkan.

Penamaan semula yang menukar 'concatenate' — mengapa pencarian dan penggantian mudah perkataan pendek merosakkan perkataan yang lebih panjang

Nama semula produk kelihatan tidak berbahaya sehingga nama pendek muncul dalam perkataan yang tidak berkaitan. Menggantikan setiap kejadian `cat` dengan `lynx` menukar `concatenate` menjadi `conlynxenate`, walaupun tiada editor yang bertujuan untuk menamakan semula sebahagian daripada kata kerja itu. Kiraan padanan sahaja tidak dapat melindungi dokumen apabila peraturan carian terlalu luas.

Padanan keseluruhan perkataan mengecilkan peraturan sebelum sebarang penggantian berlaku. Dalam ToolAcre, mendayakan Whole word menjadikan `cat` yang berdiri sendiri layak sambil membiarkan huruf yang sama di dalam `concatenate` tidak disentuh. Perbezaannya adalah berstruktur dan bukannya berasaskan kamus: enjin ekspresi biasa menyemak aksara serta-merta di sebelah setiap kemungkinan padanan.

Maksud \b — kedudukan lebar sifar antara aksara perkataan dan aksara bukan perkataan

Dalam ungkapan biasa JavaScript, `` menandakan sempadan perkataan lebar sifar. Ia tidak menggunakan huruf, ruang atau tanda baca. Sebaliknya, ia berjaya pada kedudukan di mana satu sisi adalah watak perkataan dan sisi lain tidak, termasuk permulaan atau akhir teks apabila watak bersebelahan layak sebagai watak perkataan.

Kategori `w` JavaScript membekalkan aksara perkataan yang berkaitan untuk pelaksanaan ini: ASCII huruf, digit dan garis bawah. Oleh itu `cat` sepadan dengan `cat` bersebelahan ruang, koma atau garisan berakhir, tetapi bukan segmen `cat` di dalam `concatenate`, kerana kedua-dua belah segmen itu berterusan melalui aksara perkataan dan tiada sempadan wujud di sana.

Seluruh perkataan dalam mod literal — teks carian dilepaskan dahulu, kemudian dibalut dengan sempadan

Dengan Regex dimatikan, ToolAcre mula-mula pelepasan aksara setiap aksara meta ungkapan biasa dalam teks carian. Noktah kekal sebagai noktah literal, kurungan kekal sebagai kurungan literal dan tanda tambah kekal sebagai tanda tambah. Sahaja selepas langkah pelepasan aksara itu, Seluruh perkataan membungkus sumber yang terhasil, jadi tanda baca pengguna tidak boleh menjadi sintaks regex secara senyap.

Pembalut ialah `(?:… )` tanpa ruang yang dipaparkan: bahagian dalam `(?:…)` ialah kumpulan bukan menangkap. Untuk literal mudah seperti `cat`, kesannya bersamaan dengan `cat`. Pengumpulan masih penting kerana satu laluan kompilasi mesti mengendalikan istilah mudah dan alternatif yang lebih rumit dengan selamat tanpa mengubah penomboran kumpulan tangkapan.

Seluruh perkataan dalam mod regex — mengapa cat|dog mesti disempadani sebagai kumpulan, atau sempadan terikat pada satu cabang sahaja

Mod regex meninggalkan corak yang dimasukkan utuh, tetapi Seluruh perkataan masih mengumpulkannya sebelum menambah sempadan. Untuk `cat|dog`, ToolAcre menyusun bentuk konseptual `(?:cat|dog)`. Oleh itu, kedua-dua alternatif mesti bermula dan berakhir pada sempadan perkataan, jadi `cat` dan berdiri sendiri `dog` sepadan di bawah peraturan yang sama.

Tanpa kumpulan itu, `cat|dog` akan berpecah kepada dua cabang: sempadan kiri akan mengekang sahaja `cat`, manakala sempadan kanan akan mengekang sahaja `dog`. Bergantian mempunyai keutamaan yang lebih rendah daripada urutan sekeliling. Pengelompokan ialah perkara yang menggunakan kedua-dua penegasan sempadan kepada keseluruhan pilihan dan bukannya mengedarkan satu penegasan secara tidak sekata.

Contoh yang berkesan — menamakan semula produk merentas dokumen dengan Seluruh perkataan dihidupkan dan memeriksa kiraan penggantian berbanding jangkaan

Tampal petikan wakil yang mengandungi `cat`, `dog`, `concatenate`, `dogged` dan tanda baca seperti `cat, dog.` Masukkan `cat|dog`, hidupkan Regex dan Seluruh perkataan, dan jalankan nama produk baharu dan Gantikan semua dengan perkataan baharu. Dua perkataan haiwan yang berdiri sendiri harus berubah; perkataan yang lebih panjang harus kekal sama seperti dahulu.

Baca kiraan penggantian yang dilaporkan sebelum menerima suntingan. Jika dokumen mempunyai tiga rujukan kendiri yang diketahui tetapi alat melaporkan dua atau dua belas, pilih Buat asal dan periksa konteks sampel. ToolAcre mengira padanan sebelum memanggil penggantian rentetan standard, jadi jumlah yang dipaparkan ialah semakan praktikal pada peraturan carian yang sebenarnya anda susun.

Di mana sempadan perkataan mengejutkan anda — aksara perkataan JavaScript ialah ASCII huruf, digit dan garis bawah, jadi perkataan aksen dan bukan Latin memerlukan ujian

Sempadan ini tidak melaksanakan kamus berbilang bahasa atau algoritma pembahagian teks Unikod. Oleh kerana huruf aksen dan skrip bukan Latin berada di luar kategori perkataan gaya ASCII yang digunakan di sini, Seluruh perkataan boleh mengembalikan sifar atau menghasilkan kedudukan tepi yang mengejutkan untuk istilah seperti `café`. Tanda baca dalam istilah carian boleh menyebabkan ketidakpadanan yang sama.

Uji bahasa dan ejaan yang tepat sebelum suntingan pukal, terutamanya untuk nama yang mengandungi aksen, apostrof atau sempang. Penegasan sempadan sahaja membandingkan kategori aksara bersebelahan; ia tidak tahu sama ada tipografi membentuk satu perkataan manusia. Jika sampel gagal, gunakan regex yang direka bentuk dengan sengaja untuk persekitaran tersebut daripada mempercayai kotak pilihan.

Di mana JavaScript sempadan perkataan mengejutkan anda: ASCII aksara perkataan gaya bukan perkataan linguistik

Alat ini menyediakan pilihan sensitif kes yang berasingan, bertentangan dengan sebarang implikasi bahawa pengendalian kes tidak terdapat dalam antara muka. Mengosongkannya menambahkan bendera tidak sensitif huruf besar JavaScript. Walau bagaimanapun, pelaksanaan sahaja menggunakan padanan global serta ketidakpekaan huruf pilihan; ia tidak menambah Unicode, multiline, dot-all, sticky atau bendera lain.

Artikel ini juga tidak menjadikan `` menjadi sempadan sedar Unikod atau menyelesaikan tokenisasi khusus bahasa. JavaScript pelepasan aksara harta bukan pengganti di sini kerana alat itu tidak menyusun corak dengan bendera Unicode. Untuk kerja editorial berbilang bahasa, wujudkan kes ujian yang jelas dan pilih corak yang disokong oleh enjin pelayar yang sedang digunakan.

Pilihan kes wujud dalam alat; Sempadan perkataan sedar Unikod tidak

Seluruh perkataan adalah peraturan gubahan, bukan enjin gantian kedua. Mod literal pelepasan aksara daripada carian; mod regex mengekalkannya; maka kumpulan tidak menangkap yang sama dan dua sempadan mengelilingi sama ada hasil. Perintah itu melindungi tanda baca literal dan menjadikan alternatif regex seperti `cat|dog` berkelakuan sebagai satu ungkapan terhad.

Gunakan pilihan apabila istilah gaya ASCII kendiri adalah sasaran yang dimaksudkan, kemudian anggap kiraan penggantian dan Buat asal kawalan sebagai perlindungan dan bukannya hiasan. Buka Cari dan gantikan ToolAcre, uji selang-seli terhadap kedua-dua contoh kendiri dan terbenam, dan sahaja gunakannya pada dokumen penuh selepas contoh tersebut berkelakuan seperti yang diharapkan.