Ruby Academy · Pelajaran

Literal Regex

Asas corak

Pelajaran 1 daripada 413 langkah

Literal Regex ialah pelajaran Ruby Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ruby Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Apakah Ungkapan Biasa?

Ungkapan biasa ialah corak yang digunakan untuk memadankan teks. Dalam Ruby, ungkapan biasa ialah objek kelas pertama daripada kelas Regexp.

Anda menggunakan ungkapan biasa untuk mencari, mengesahkan, dan mengeluarkan bahagian daripada rentetan.

  • Padankan perkataan, digit, atau simbol
  • Sahkan alamat e-mel dan nombor telefon
  • Keluarkan bahagian daripada teks yang tidak teratur
pattern = /hello/
puts pattern.class
puts(pattern.match?('hello world'))

Literal Ungkapan Biasa dengan Palang

Cara paling biasa untuk menulis ungkapan biasa dalam Ruby adalah antara dua palang: /pattern/.

Ini dipanggil literal ungkapan biasa. Semua yang berada antara palang itu ialah coraknya.

ruby = /ruby/
puts ruby.class
puts(ruby.match?('I love ruby'))
puts(ruby.match?('I love python'))

Operator =~ untuk Memadankan

Operator =~ menguji rentetan terhadap ungkapan biasa. Operator ini mengembalikan indeks padanan pertama atau nil jika tiada padanan.

puts('hello world' =~ /world/)
puts(('hello world' =~ /xyz/).inspect)

match? untuk Jawapan Ya atau Tidak

Apabila anda hanya memerlukan jawapan ya atau tidak, gunakan match?. Ia mengembalikan true atau false dan lebih pantas kerana tidak membina objek MatchData.

puts(/\d/.match?('abc123'))
puts(/\d/.match?('abcdef'))

Kelas Aksara

Kelas aksara dalam kurungan siku memadankan mana-mana satu aksara daripada suatu set.

  • [abc] memadankan a, b, atau c
  • [a-z] memadankan mana-mana huruf kecil
  • [0-9] memadankan mana-mana digit
puts(/[aeiou]/.match?('sky'))
puts(/[aeiou]/.match?('tree'))
puts(/[0-9]/.match?('room 7'))

Kelas Ringkas

Ruby menyediakan aksara singkatan untuk kelas aksara yang biasa:

  • \d ialah digit, \D ialah bukan digit
  • \w ialah aksara perkataan (huruf, digit, garis bawah)
  • \s ialah ruang kosong, \S ialah bukan ruang kosong
puts(/\d\d/.match?('age 42'))
puts(/\w+/.match?('hello_99'))
puts(/\s/.match?('no_space'))

Titik dan Pengkuantiti

Titik . memadankan mana-mana satu aksara (kecuali baris baharu). Pengkuantiti mengawal pengulangan:

  • * sifar kali atau lebih
  • + sekali atau lebih
  • ? sifar kali atau sekali
  • {2,4} antara 2 hingga 4 kali
puts(/ab+c/.match?('abbbc'))
puts(/colou?r/.match?('color'))
puts(/\d{3}/.match?('id 451'))

Alternatif dengan Palang

Palang | bermaksud OR. Corak cat|dog memadankan salah satu daripada kedua-dua perkataan itu.

Gunakan tanda kurung untuk mengumpulkan alternatif dalam corak yang lebih besar.

pet = /cat|dog/
puts(pet.match?('I have a dog'))
puts(pet.match?('I have a fish'))
puts(/^(yes|no)$/.match?('yes'))

Bendera Tidak Peka Huruf Besar dan Kecil

Tambahkan bendera i selepas palang penutup untuk menjadikan padanan tidak peka huruf besar dan kecil.

Bendera lain yang berguna termasuk m (titik memadankan baris baharu) dan x (lanjutan, mengabaikan ruang kosong).

puts(/ruby/i.match?('I love RUBY'))
puts(/ruby/.match?('I love RUBY'))

Membina Ungkapan Biasa daripada Rentetan

Anda boleh membina ungkapan biasa semasa masa jalan dengan Regexp.new. Gunakan Regexp.escape untuk memasukkan masukan pengguna yang mungkin mengandungi aksara khas dengan selamat.

word = 'price'
pattern = Regexp.new(word)
puts(pattern.match?('the price is high'))
puts(Regexp.escape('a.b*c'))

Pratonton Penambat

Penambat memadankan kedudukan, bukan aksara:

  • ^ permulaan baris
  • $ penghujung baris
  • \A permulaan rentetan
  • \z penghujung rentetan

Anda akan mempelajarinya dengan lebih mendalam kemudian.

puts(/^Hello/.match?('Hello there'))
puts(/world$/.match?('hello world'))

Semakan Pantas

Apakah yang dikembalikan oleh operator =~ apabila ungkapan biasa memadankan rentetan?

Ulang Kaji: Literal Ungkapan Biasa

Anda telah mempelajari asas ungkapan biasa Ruby:

  • Literal ungkapan biasa ditulis antara /slashes/
  • =~ mengembalikan indeks, manakala match? mengembalikan benar/palsu
  • Kelas aksara [ ] dan bentuk ringkas \d \w \s
  • Pengkuantiti * + ? {n,m} dan alternatif |
  • Bendera i menjadikan padanan tidak peka huruf besar dan kecil

Seterusnya, anda akan menangkap bahagian yang dipadankan.

puts(/\w+@\w+\.\w+/i.match?('USER@Mail.com'))
Percuma untuk bermula

Pelajari Ruby dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
109

Soalan Lazim

Adakah pelajaran “Literal Regex” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Ruby Academy, termasuk “Literal Regex”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Literal Regex”?

Asas corak Anda berlatih Ruby Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ruby Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ruby Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Literal Regex” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Literal Regex
  2. Pemadanan dan Penangkapan
  3. Penggantian
  4. Kumpulan Bernama dan Penambat
← Kembali ke Ruby Academy