Bahasa Melayu

Teks & alat harian · Kit Alat Teks

Literal atau regex? Mengapa titik dalam istilah carian anda boleh mengubah setiap hasil carian

· Mengapa ia penting

cari-dan-ganti ungkapan biasa penyuntingan teks

Nombor versi bertitik yang mengambil laluan carian literal dan ungkapan biasa yang berasingan
Ilustrasi vektor ToolAcre asal

Menjelaskan aksara yang membawa maksud dalam ungkapan biasa, perkara yang tidak kena apabila 'a.b' atau 'v1.2 (beta)' dianggap sebagai corak dan sebab mod literal yang terlepas dari segala-galanya harus menjadi lalai.

Mencari 'v1.2' dan memadankan 'v102' — cara alat regex-first menukar tanda baca menjadi kad bebas secara senyap-senyap

Ejen sokongan yang menukar `v1.2` dalam nota keluaran mungkin secara munasabah menjangkakan empat aksara tersebut untuk mengenal pasti satu label versi. Dengan Regex didayakan, walau bagaimanapun, titik bermaksud sebarang aksara kecuali pemisah baris. Oleh itu, corak boleh memadankan `v102`, `v1-2` atau `v1x2` dan Gantikan semua boleh mengubah entri yang tidak pernah menjadi sebahagian daripada keluaran yang diminta.

Kegagalan ini senyap kerana coraknya sah. Tiada mesej ralat untuk membezakan kad bebas yang disengajakan daripada tanda baca yang disalin daripada nama fail. Amaran pertama mungkin merupakan kiraan penggantian yang besar tanpa diduga. Apabila tugasnya adalah untuk menggantikan teks yang diketahui dengan tepat, tanda baca hendaklah data, bukan arahan kepada enjin carian.

Metacharacter — titik, kurungan, kurungan, tambah, bintang, tanda soal, paip, karet, dolar dan garis miring ke belakang, dan apa yang dilakukan oleh setiap satu

Dalam mod regex JavaScript, titik ialah kad bebas; kurungan segi empat sama menentukan kelas aksara; kurungan mencipta kumpulan; tambah, bintang dan pengulangan kawalan tanda soal; dan paip menawarkan alternatif. Tanda karet dan dolar melabuhkan corak pada permulaan atau akhir keseluruhan teks dalam alat ini, kerana mod berbilang baris tidak didayakan.

Segaris ke belakang mengubah cara aksara berikut dibaca dan pendakap boleh menyatakan kiraan pengulangan. Simbol-simbol ini sahaja penting dalam kedudukan yang tatabahasa regex memperlakukannya secara istimewa, jadi menghafal senarai kurang dipercayai daripada menentukan mod mana yang diperlukan oleh pekerjaan itu. Jika anda memadankan label yang dibekalkan, serpihan laluan atau nama fail, mulakan secara literal.

Metakarakter yang penting dalam mod regex JavaScript

Mod literal menjadikan carian bermakna apa yang ditaip. ToolAcre pelepasan aksara metakarakter ungkapan biasa sebelum menyusun carian, jadi `v1.2 (beta)` sepadan dengan titik, ruang dan kurungan itu sendiri. Ia tidak menukar frasa menjadi kad bebas diikuti oleh kumpulan tangkapan, dan ia masih menemui setiap kejadian tepat merentas teks.

Pelepasan aksara itu sahaja berlaku di bahagian carian. Medan gantian masih mengikut JavaScript peraturan rentetan gantian, dengan `$&` memasukkan teks yang dipadankan dan `$$` menghasilkan satu tanda dolar. Oleh itu, carian literal adalah lalai yang selamat untuk mengenal pasti teks, tetapi penggantian yang mengandungi tanda dolar masih patut disemak secara sengaja sebelum Ganti semua dipilih.

Mod regex — apabila anda mahukan kuasa, dan cara untuk melepaskan diri daripada watak individu

Mod regex berguna apabila beberapa borang sepadan dengan satu peraturan. Corak boleh menyasarkan julat digit, tanda baca pilihan atau alternatif tanpa menyenaraikan setiap ejaan sumber. Hidupkan Regex sahaja apabila kebolehubahan itu disengajakan, kemudian elakkan watak khas dengan garis miring ke belakang apabila ia mesti mengekalkan makna biasa, seperti `.` untuk satu titik.

Alat ini menyusun corak dengan sintaks regex JavaScript dan sentiasa menggunakannya secara global. Membersihkan Sensitif huruf besar dan kecil menambah padanan tidak sensitif huruf besar-besaran, tetapi bendera berbilang baris, titik-semua, melekit dan unikod tidak ditawarkan. Sintaks tidak sah dilaporkan tanpa mengubah teks. Corak yang sah tetapi terlalu luas masih berjalan, jadi kejayaan kompilasi bukanlah bukti set padanan yang selamat.

Contoh yang berjaya — menggantikan 'config.yml (lama)' merentas nota keluaran dalam mod literal, kemudian cuba perkara yang sama dalam mod regex untuk melihat perbezaan

Pertimbangkan nota keluaran yang mengandungi `Load config.yml (old)`, `Archive configXyml old` dan `Keep config.yml (new)`. Dengan Regex dimatikan, cari `config.yml (old)` dan gantikannya dengan `config.yml (legacy)`. Tepat frasa pertama berubah kerana titik dan kurungan terlepas sebelum corak disusun.

Hidupkan Regex dan serahkan carian tanpa lari yang sama. Titik boleh menggunakan aksara lain, manakala kurungan kumpulan `old` bukannya padanan kurungan literal, jadi baris yang dimaksudkan tidak lagi sepadan seperti yang ditulis. Setara regex memerlukan `config.yml (old)`. Versi literal adalah lebih pendek, lebih jelas dan lebih sejajar dengan tugasan teks tepat ini.

Kesilapan biasa — mengekori ruang dalam kotak carian, mencampurkan Seluruh perkataan dan literal, dan melupakan semakan kiraan gantian

Ruang jejak mudah diabaikan kerana medan carian memberi mereka sedikit berat visual, namun mod literal mengekalkannya. Carian untuk `beta ` tidak akan sepadan dengan `beta` pada penghujung baris. Semak sempadan medan apabila istilah yang boleh dilihat dengan jelas melaporkan penggantian sifar, dan elakkan menambah ruang semata-mata untuk memisahkan teks yang disalin daripada prosa sekeliling.

Seluruh perkataan bukanlah nama lain untuk literal. Ia membungkus carian terkumpul dalam sempadan perkataan, yang berasaskan ASCII di sini dan boleh gagal di sekitar tanda baca atau istilah beraksen. Periksa juga kiraan penggantian selepas setiap larian dan gunakan Buat asal apabila ia mengejutkan. Kiraan adalah bukti tentang skop, bukan mesej kejayaan hiasan.

Kesilapan biasa: ruang, Seluruh sempadan perkataan dan sintaks penggantian

Halaman ini tidak mencuba panduan penuh untuk bendera ungkapan biasa. ToolAcre menggunakan padanan global dan padanan tidak sensitif huruf secara pilihan, manakala sauh masih merujuk kepada teks lengkap dan bukannya setiap baris. Corak yang disalin daripada enjin dengan bendera sebaris, kelas POSIX atau sintaks yang berbeza mungkin gagal untuk disusun atau mungkin bermakna sesuatu yang lain dalam pelayar.

Kumpulan tangkapan disokong, jadi garis besar memerlukan pembetulan daripada mengatakan mereka berada di luar alat. Dalam mod Regex, kumpulan boleh dirujuk dengan `$1`, `$2` dan nombor kemudian dalam penggantian. Keupayaan itu adalah berasingan daripada carian literal dan daripada kawalan bendera terhad; gunakannya sahaja apabila penstrukturan semula teks dipadankan ialah matlamat sebenar.

Bendera adalah terhad di sini, manakala kumpulan tangkapan disokong dalam penggantian

Peraturan praktikalnya mudah: biarkan Regex dimatikan apabila menggantikan versi yang diketahui, nama fail, label produk atau serpihan ayat. Mod literal pelepasan aksara daripada aksara khas secara automatik, mengekalkan tanda baca yang mengenal pasti sasaran. Dayakan Regex sahaja apabila anda boleh menyatakan variasi yang patut diterima oleh corak dan sebab carian tepat tidak mencukupi.

Sebelum membuat nota keluaran yang diedit, bandingkan kiraan yang dilaporkan dengan bilangan perubahan yang anda jangkakan dan periksa hasilnya. ToolAcre membiarkan corak yang tidak sah tidak disentuh dan menyediakan Buat asal untuk corak sah yang mencapai terlalu jauh. Perlindungan tersebut membantu, tetapi memilih mod literal untuk kerja literal menghalang padanan am sebelum ia berlaku.