Bahasa Indonesia

Teks & alat sehari-hari · Perangkat Teks

Harfiah atau regex? Mengapa titik pada istilah penelusuran Anda dapat mengubah setiap hasil

· Mengapa itu penting

temukan-dan-ganti ekspresi reguler pengeditan teks

Nomor versi bertitik yang mengambil jalur pencarian ekspresi literal dan reguler yang terpisah
Ilustrasi vektor ToolAcre asli

Menjelaskan karakter mana yang membawa makna dalam ekspresi reguler, apa yang salah ketika 'a.b' atau 'v1.2 (beta)' diperlakukan sebagai sebuah pola, dan mengapa mode literal yang lolos dari semuanya harus menjadi default.

Mencari 'v1.2' dan mencocokkan 'v102' — bagaimana alat yang mengutamakan regex secara diam-diam mengubah tanda baca menjadi karakter pengganti

Agen dukungan yang mengubah `v1.2` dalam catatan rilis mungkin mengharapkan keempat karakter tersebut mengidentifikasi satu label versi. Namun, jika Regex diaktifkan, titik berarti karakter apa pun kecuali garis putus-putus. Oleh karena itu, polanya dapat cocok dengan `v102`, `v1-2` atau `v1x2`, dan Ganti semua dapat mengubah entri yang tidak pernah menjadi bagian dari rilis yang diminta.

Kegagalan ini tidak terjadi karena polanya valid. Tidak ada pesan kesalahan untuk membedakan wildcard yang disengaja dari tanda baca yang disalin dari nama file. Peringatan pertama mungkin berupa jumlah penggantian yang sangat besar. Jika tugasnya adalah mengganti teks yang diketahui secara pasti, tanda bacanya harus berupa data, bukan instruksi ke mesin pencari.

Karakter meta — titik, tanda kurung, tanda kurung, plus, bintang, tanda tanya, pipa, tanda sisipan, dolar, dan garis miring terbalik, serta fungsinya masing-masing

Dalam mode regex JavaScript, titik adalah karakter pengganti; tanda kurung siku mendefinisikan kelas karakter; tanda kurung membuat grup; plus, pengulangan kontrol bintang dan tanda tanya; dan pipa menawarkan alternatif. Tanda sisipan dan dolar mengaitkan pola ke awal atau akhir seluruh teks di alat ini, karena mode multiline tidak diaktifkan.

Garis miring terbalik mengubah cara karakter berikut dibaca, dan tanda kurung kurawal dapat menyatakan jumlah pengulangan. Simbol-simbol ini hanya penting pada posisi di mana tata bahasa regex memperlakukannya secara khusus, jadi menghafal daftar kurang dapat diandalkan dibandingkan memutuskan mode mana yang diperlukan pekerjaan. Jika Anda mencocokkan label, fragmen jalur, atau nama file yang disediakan, mulailah secara harfiah.

Metakarakter yang penting dalam mode regex JavaScript

Mode literal membuat pencarian sesuai dengan apa yang diketik. ToolAcre lolos dari metakarakter ekspresi reguler sebelum menyusun penelusuran, jadi `v1.2 (beta)` cocok dengan titik, spasi, dan tanda kurung itu sendiri. Itu tidak mengubah frasa menjadi karakter pengganti yang diikuti oleh grup tangkapan, dan masih menemukan setiap kemunculan persis di seluruh teks.

Pelarian itu hanya terjadi pada sisi pencarian. Bidang pengganti masih mengikuti aturan string pengganti JavaScript, di mana `$&` menyisipkan teks yang cocok dan `$$` menghasilkan satu tanda dolar. Oleh karena itu, penelusuran literal merupakan default yang aman untuk mengidentifikasi teks, namun pengganti yang berisi tanda dolar masih perlu ditinjau secara cermat sebelum Ganti semua dipilih.

Mode regex — saat Anda menginginkan kekuatan, dan cara melepaskan diri dari masing-masing karakter

Mode regex berguna ketika beberapa formulir harus cocok dengan satu aturan. Sebuah pola dapat menargetkan rentang digit, tanda baca opsional, atau alternatif tanpa mencantumkan setiap sumber ejaan. Aktifkan Regex hanya jika variabilitas tersebut disengaja, lalu hilangkan karakter khusus dengan garis miring terbalik jika karakter tersebut harus mempertahankan makna biasanya, seperti `.` untuk sebuah titik.

Alat ini mengkompilasi pola dengan sintaksis regex JavaScript dan selalu menerapkannya secara global. Kliring Peka huruf besar-kecil menambahkan pencocokan peka huruf besar-kecil, tetapi tanda multiline, titik-semua, tempel, dan unicode tidak ditawarkan. Sintaks yang tidak valid dilaporkan tanpa mengubah teks. Pola yang valid namun terlalu luas masih berjalan, jadi keberhasilan kompilasi bukanlah bukti jaringan pencocokan yang aman.

Contoh praktis - mengganti 'config.yml (lama)' di seluruh catatan rilis dalam mode literal, lalu mencoba hal yang sama dalam mode regex untuk melihat perbedaannya

Pertimbangkan catatan rilis yang berisi `Load config.yml (old)`, `Archive configXyml old` dan `Keep config.yml (new)`. Dengan Regex nonaktif, cari `config.yml (old)` dan ganti dengan `config.yml (legacy)`. Tepatnya frasa pertama berubah karena titik dan tanda kurung di-escape sebelum pola dikompilasi.

Aktifkan Regex dan kirimkan pencarian tak lolos yang sama. Titik dapat menggunakan karakter lain, sedangkan grup tanda kurung `old` alih-alih mencocokkan tanda kurung literal, sehingga baris yang dimaksud tidak lagi cocok dengan yang tertulis. Setara dengan regex membutuhkan `config.yml (old)`. Versi literalnya lebih pendek, lebih jelas, dan lebih selaras dengan tugas teks persis ini.

Kesalahan umum - menambahkan spasi di kotak pencarian, mencampurkan seluruh kata dan literal, dan lupa memeriksa jumlah penggantian

Spasi tambahan mudah untuk diabaikan karena bidang pencarian memberikan sedikit bobot visual, namun mode literal mempertahankannya. Pencarian untuk `beta ` tidak akan cocok dengan `beta` di akhir baris. Periksa batas bidang ketika istilah yang terlihat jelas melaporkan tidak ada penggantian, dan hindari menambahkan spasi hanya untuk memisahkan teks yang disalin dari prosa di sekitarnya.

Seluruh kata bukanlah nama lain dari literal. Ini membungkus pencarian yang dikompilasi dalam batas kata, yang berbasis ASCII di sini dan dapat gagal dalam hal tanda baca atau istilah beraksen. Periksa juga jumlah penggantian setelah setiap proses dan gunakan Undo jika hal tersebut mengejutkan. Penghitungan tersebut merupakan bukti tentang ruang lingkup, bukan pesan keberhasilan yang bersifat dekoratif.

Kesalahan umum: spasi, batasan seluruh kata, dan sintaksis pengganti

Halaman ini tidak memberikan panduan lengkap tentang tanda ekspresi reguler. ToolAcre menggunakan pencocokan global dan pencocokan tidak peka huruf besar-kecil, sementara jangkar masih mengacu pada teks lengkap, bukan setiap baris. Pola yang disalin dari mesin dengan flag inline, kelas POSIX, atau sintaksis yang berbeda mungkin gagal dikompilasi atau mungkin memiliki arti lain di browser.

Kelompok penangkap didukung, sehingga garis besarnya memerlukan koreksi daripada mengatakan bahwa mereka berada di luar alat. Dalam mode Regex, grup dapat direferensikan dengan `$1`, `$2` dan nomor yang lebih baru sebagai penggantinya. Kemampuan tersebut terpisah dari pencarian literal dan dari kontrol bendera yang terbatas; gunakan hanya ketika merestrukturisasi teks yang cocok adalah tujuan sebenarnya.

Bendera dibatasi di sini, sementara kelompok penangkap didukung sebagai pengganti

Aturan praktisnya sederhana: biarkan Regex tidak aktif saat mengganti versi, nama file, label produk, atau penggalan kalimat yang diketahui. Mode literal mengeluarkan karakter khusus secara otomatis, mempertahankan tanda baca yang mengidentifikasi target. Aktifkan Regex hanya ketika Anda dapat menyatakan variasi apa yang harus diterima oleh pola dan mengapa pencarian yang tepat tidak cukup.

Sebelum melakukan catatan rilis yang telah diedit, bandingkan jumlah yang dilaporkan dengan jumlah perubahan yang Anda harapkan dan periksa hasilnya. ToolAcre membiarkan pola yang tidak valid tidak tersentuh dan memberikan Undo untuk pola valid yang jangkauannya terlalu jauh. Perlindungan tersebut membantu, namun memilih mode literal untuk pekerjaan literal mencegah pencocokan luas sebelum hal itu terjadi.