Go Academy · Pelajaran

Asas regexp

Kompil dan padankan corak

Pelajaran 1 daripada 413 langkah

Asas regexp ialah pelajaran Go 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 Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.

Apakah Ungkapan Biasa?

Ungkapan biasa (regexp) ialah corak yang menerangkan satu set rentetan. Go menyediakannya melalui pakej regexp.

Ungkapan ini amat sesuai untuk mengesahkan dan mencari teks.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    matched, _ := regexp.MatchString("go+", "gooo")
    fmt.Println(matched)
}

Padanan Pantas dengan MatchString

regexp.MatchString(pattern, s) melaporkan sama ada corak itu muncul di mana-mana dalam s. Ia mengembalikan nilai boolean dan ralat.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    ok, _ := regexp.MatchString("cat", "the cat sat")
    fmt.Println(ok)
}

Mengompil Corak

Untuk penggunaan berulang, kompilkannya sekali dengan regexp.Compile. Ia mengembalikan *regexp.Regexp yang boleh digunakan semula serta ralat untuk corak yang tidak sah.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re, err := regexp.Compile("[0-9]+")
    fmt.Println(re.MatchString("abc123"), err)
}

MustCompile untuk Pemalar

regexp.MustCompile mencetuskan panik jika corak tidak sah. Gunakannya untuk corak tetap yang diketahui pada masa kompilasi, biasanya dalam pemboleh ubah peringkat pakej.

package main

import (
    "fmt"
    "regexp"
)

var digits = regexp.MustCompile("[0-9]+")

func main() {
    fmt.Println(digits.MatchString("order 42"))
}

Kelas Aksara

Kurungan siku mentakrifkan set aksara yang dibenarkan. [aeiou] sepadan dengan mana-mana vokal; julat seperti [a-z] sepadan dengan suatu julat aksara.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Println(re.MatchString("Hello"))
}

Kelas Pratakrif

Pintasan memudahkan set yang biasa digunakan: \d ialah digit, \w ialah aksara perkataan, dan \s ialah ruang kosong. Dalam rentetan Go, laksanakan aksara sengkang terbalik.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\d+")
    fmt.Println(re.MatchString("abc 99"))
}

Pengkuantiti

Pengkuantiti menyatakan bilangan ulangan:

  • * sifar atau lebih,
  • + satu atau lebih,
  • ? sifar atau satu,
  • {2,4} suatu julat.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("a{2,3}")
    fmt.Println(re.MatchString("aaa"))
    fmt.Println(re.MatchString("a"))
}

Penambat

Penambat menetapkan kedudukan padanan: ^ bermaksud permulaan teks dan $ bermaksud penghujung teks. Gunakan kedua-duanya untuk mewajibkan padanan seluruh rentetan.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^go$")
    fmt.Println(re.MatchString("go"))
    fmt.Println(re.MatchString("going"))
}

Alternatif dan Kumpulan

Palang | bermaksud OR, manakala tanda kurung mengumpulkan bahagian bersama. (cat|dog)s? sepadan dengan cat, cats, dog atau dogs.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(cat|dog)s?")
    fmt.Println(re.MatchString("dogs"))
}

Mengesahkan Format

Corak berpenambat boleh digunakan sebagai pengesah. Di sini kita menyemak kod gaya ZIP yang mudah, terdiri tepat daripada lima digit.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^\\d{5}$")
    fmt.Println(re.MatchString("12345"))
    fmt.Println(re.MatchString("123"))
}

Memadankan pada Bait

Kaedah tersedia dalam bentuk rentetan dan hirisan bait. Match berfungsi pada []byte, sepadan dengan MatchString.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.Match([]byte("id7")))
}

Semakan Pantas

Fungsi yang manakah mencetuskan panik apabila corak tidak sah dan paling sesuai untuk corak tetap?

Ulang Kaji: Asas Ungkapan Biasa

Anda telah mempelajari asasnya:

  • Buat padanan dengan pantas menggunakan MatchString; kompil dengan Compile atau MustCompile.
  • Bina corak daripada kelas, pengkuantiti, penambat dan kumpulan.
  • Gunakan ^ dan $ sebagai penambat untuk pengesahan seluruh rentetan.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^[a-z]+@[a-z]+$")
    fmt.Println(re.MatchString("hi@host"))
}
Percuma untuk bermula

Pelajari Go 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
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Asas regexp” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Asas regexp”, 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 Go Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Asas regexp”?

Kompil dan padankan corak Anda berlatih Go 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 Go Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Go 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 “Asas regexp” 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 Go Academy ini?

Ya. Setiap pelajaran Go 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. Asas regexp
  2. Mencari dan Mengekstrak
  3. Menggantikan Teks
  4. Petua Prestasi
← Kembali ke Go Academy