Tiada muat naik, 100% setempat, tiada akaun

Tutorial

Cara menguji regex tanpa memasang apa-apa

Anda telah menulis satu corak dan perlu tahu sama ada ia benar-benar sepadan dengan jangkaan anda sebelum memasukkannya ke dalam kod. Memasang alat desktop atau menampal log peribadi ke laman web rawak adalah berlebihan, dan selalunya berisiko. Panduan ini menunjukkan cara menjalankan regex terhadap teks anda sendiri terus dalam pelayar, menogol bendera yang mengubah kelakuannya, membaca kumpulan tangkapan yang ditariknya keluar, dan melihat padanan diserlahkan dalam baris, sementara corak dan teks tidak pernah meninggalkan tab anda.

Langkah demi langkah

  1. Buka penguji regex dan taip corak anda dalam medan antara dua garis miring. Anda tidak menulis garis miring itu sendiri: alat ini memaparkannya supaya anda melihat corak seperti cara enjin membacanya. Tampal teks contoh anda ke dalam kotak di bawah, contohnya beberapa baris log, senarai e-mel atau satu blok kod yang ingin anda cari.
    Corak regex dan rentetan bendera dimasukkan dalam penguji, dengan teks contoh ditampal ke dalam kotak di bawah
  2. Tetapkan bendera dalam kotak kecil di sebelah corak. Bendera g mencari setiap padanan dan bukan berhenti pada yang pertama; i menjadikan padanan tidak mengira huruf besar atau kecil; m membenarkan sauh ^ dan $ sepadan dengan permulaan dan penghujung setiap baris dan bukan keseluruhan teks; s membenarkan titik turut sepadan dengan pemisah baris. Gabungkan ia dengan bebas, contohnya gim.
  3. Tekan Uji. Setiap padanan diserlahkan terus dalam teks anda, dan senarai di bawah memaparkan setiap padanan dengan kedudukannya serta nilai setiap kumpulan tangkapan. Ubah suai corak dan jalankan semula: pratonton dikemas kini supaya anda boleh memperhalusi corak sehingga ia menangkap tepat apa yang anda maksudkan dan tiada yang lain.
    Hasil ujian: padanan diserlahkan dalam baris dan satu senarai memaparkan setiap kedudukan padanan serta kumpulan tangkapannya

Kumpulan tangkapan, bernama dan bernombor

Kumpulan tangkapan ialah bahagian corak anda yang dibalut dalam kurungan, dan ia caranya anda mengeluarkan satu cebisan daripada setiap padanan dan bukan sekadar mengesahkan keseluruhannya sepadan. Kumpulan bernombor dikira dari kiri ke kanan mengikut kurungan pembukanya: dalam (\d{4})-(\d{2})-(\d{2}) kumpulan 1 ialah tahun, kumpulan 2 bulan, kumpulan 3 hari. Kumpulan bernama menggunakan sintaks (?<name>...), jadi (?<year>\d{4}) jauh lebih mudah dibaca berbanding nombor kosong apabila corak makin panjang. Jika anda hanya mahu mengumpulkan tanpa menangkap, contohnya untuk menggunakan pengkuantiti pada beberapa aksara, gunakan kumpulan tanpa tangkapan (?:...) supaya ia tidak menyesakkan senarai hasil anda. Penguji ini memaparkan nilai setiap kumpulan bagi setiap padanan, iaitu cara terpantas untuk mengesahkan anda mengekstrak keratan yang betul.

Apabila corak tergantung atau bertindak luar jangka

Dua masalah timbul berulang kali. Yang pertama ialah pengunduran berbalik bencana: corak seperti (a+)+$ yang dijalankan terhadap rentetan panjang yang tidak sepadan boleh membuatkan enjin mencuba bilangan laluan yang eksponen lalu membeku. Penguji menjalankan setiap ujian dalam satu Web Worker dengan pengawas pendek, jadi daripada tab tergantung anda menerima mesej yang jelas dan boleh memudahkan corak, biasanya dengan menjadikan pengkuantiti bersifat posesif, menyauhkannya, atau mengelakkan ulangan bersarang. Yang kedua ialah padanan tamak berbanding malas: secara lalai .* meraup sebanyak mungkin, jadi untuk memadankan kandungan satu teg HTML anda mahukan bentuk malas .*? sebaliknya. Jika anda membandingkan dua versi rentetan yang sedikit berbeza untuk melihat apa yang patut disasarkan oleh corak anda, alat beza teks menjajarkannya supaya perbezaan itu jelas sebelum anda menulis ungkapan.

Cara pelayar menilai regex anda

Pelayar moden menghantar enjin regex ECMAScript terbina dalam yang menyokong set bendera penuh: padanan tidak sensitif huruf besar-kecil (i), mod berbilang baris (m), dotAll (s), Unicode (u), dan bendera melekit (y). Apabila anda menaip corak dalam penguji, enjin menyusunnya ke NFA dalaman dan menilainya terhadap rentetan ujian anda dalam masa nyata, melaporkan setiap kedudukan padanan dan mana-mana kumpulan tangkapan. Penelusuran balik berlaku secara tempatan pada CPU anda: corak seperti (a+)+ pada rentetan panjang yang tidak sepadan boleh berputar selama beberapa saat, dan melihat gangguan itu dalam pelayar adalah maklum balas yang berguna sebelum menggunakan corak dalam kod pengeluaran. Tiada teks yang meninggalkan halaman, jadi anda boleh menampal sampel log atau mana-mana input tanpa menghalanya melalui pelayan pihak ketiga.

Alat yang digunakan dalam panduan ini

Soalan lazim

Adakah corak atau teks ujian saya dihantar ke pelayan?

Tidak. Regex berjalan dalam satu Web Worker di pelayar anda sendiri, jadi corak dan teks yang anda uji kekal dalam tab. Ini penting kerana teks yang anda tampal selalunya log sebenar, senarai pelanggan atau konfigurasi dalaman, tepat jenis data yang anda tidak mahu berada di pelayan orang lain. Buka panel Rangkaian dalam alat pembangun anda sambil menekan Uji dan anda akan lihat tiada permintaan membawa teks anda keluar. Ia juga terus berfungsi luar talian setelah halaman dimuatkan.

Penguji menggunakan ragam regex yang mana?

Ia menggunakan enjin ungkapan biasa JavaScript yang terbina dalam pelayar anda, enjin yang sama yang berjalan dalam Node.js dan dalam mana-mana halaman web. Itu merangkumi sintaks lazim: kelas aksara, pengkuantiti, sauh, silih ganti, kumpulan tangkapan bernombor dan bernama, jangkaan ke hadapan dan ke belakang. Beberapa ciri daripada ragam lain, seperti rekursi gaya Perl atau pengkuantiti posesif, bukan sebahagian enjin JavaScript, jadi jika satu corak yang anda salin daripada projek PHP atau Python bertindak berbeza, perbezaan ragam itulah biasanya puncanya.

Sumber