Tutorial Lanjutan tentang Ungkapan Biasa dalam Bahasa Go: Cara Menggunakan Tangkapan Berkumpulan

WBOY
Lepaskan: 2023-07-13 15:15:14
asal
1712 orang telah melayarinya

Tutorial lanjutan tentang ungkapan biasa dalam bahasa Go: Cara menggunakan tangkapan kumpulan

Ekspresi biasa memainkan peranan yang sangat penting dalam pemprosesan teks, dan dalam bahasa Go, pakej regexp disediakan dalam pustaka standard untuk memproses ungkapan biasa Pemadanan dan penggantian. Dalam tutorial sebelumnya, kami telah mempelajari sintaks ungkapan biasa asas dan cara melaksanakan operasi pemadanan dan penggantian mudah. Tutorial ini akan memperkenalkan lagi cara menggunakan tangkapan kumpulan untuk memudahkan pemprosesan hasil padanan yang lebih fleksibel.

  1. Gunakan kurungan untuk mengumpulkan
    Dalam ungkapan biasa, anda boleh menggunakan kurungan untuk mengumpulkan sebahagian daripada corak untuk memudahkan penggunaan seterusnya. Sebagai contoh, kita boleh menggunakan tanda kurung untuk mengumpulkan tiga nombor pertama dan empat nombor terakhir, seperti yang ditunjukkan di bawah:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `(d{3})-(d{4})`
    text := "我的电话号码是123-4567,你的电话号码是987-6543。"

    re := regexp.MustCompile(pattern)
    result := re.FindAllStringSubmatch(text, -1)

    for _, match := range result {
        fmt.Println("完整匹配结果:", match[0])
        fmt.Println("前三个数字:", match[1])
        fmt.Println("后四个数字:", match[2])
    }
}
Salin selepas log masuk

Hasil keluarannya ialah:

完整匹配结果: 123-4567
前三个数字: 123
后四个数字: 4567
完整匹配结果: 987-6543
前三个数字: 987
后四个数字: 6543
Salin selepas log masuk

Dengan menggunakan kurungan kepada kumpulan, kita boleh mendapatkan hasil yang sepadan dengan mudah Kandungan setiap kumpulan dalam.

  1. Named Groups
    Selain menggunakan nombor untuk merujuk kepada kumpulan, anda juga boleh menggunakan nama untuk merujuk kepada kumpulan. Dengan menggunakan sintaks (?P<name>pattern),我们可以为某个分组指定一个名称name. Sebagai contoh, kita boleh memberikan nama kepada kumpulan tiga nombor pertama dan empat nombor terakhir seperti berikut:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `(?P<area>d{3})-(?P<number>d{4})`
    text := "我的电话号码是123-4567,你的电话号码是987-6543。"

    re := regexp.MustCompile(pattern)
    result := re.FindAllStringSubmatch(text, -1)

    for _, match := range result {
        fmt.Println("完整匹配结果:", match[0])
        fmt.Println("前三个数字:", match[1])
        fmt.Println("后四个数字:", match[2])
        fmt.Println("区号:", match[re.SubexpIndex("area")])
        fmt.Println("号码:", match[re.SubexpIndex("number")])
    }
}
Salin selepas log masuk

Outputnya ialah:

完整匹配结果: 123-4567
前三个数字: 123
后四个数字: 4567
区号: 123
号码: 4567
完整匹配结果: 987-6543
前三个数字: 987
后四个数字: 6543
区号: 987
号码: 6543
Salin selepas log masuk

Dengan menggunakan kumpulan yang dinamakan, anda boleh merujuk kumpulan bukan sahaja dengan nombor, tetapi juga dengan nombor Kumpulan rujukan mengikut nama, menjadikan kod lebih mudah dibaca dan diselenggara.

Ringkasan
Artikel ini memperkenalkan cara menggunakan ungkapan biasa untuk tangkapan kumpulan dalam bahasa Go. Dengan menggunakan tanda kurung untuk pengelompokan, kita boleh mendapatkan kandungan setiap kumpulan dengan mudah dalam hasil padanan. Pada masa yang sama, kami juga mempelajari cara menggunakan kumpulan yang dinamakan untuk merujuk kumpulan untuk menjadikan kod lebih mudah dibaca dan diselenggara. Saya harap tutorial ini akan membantu anda memahami tangkapan kumpulan ungkapan biasa.

Atas ialah kandungan terperinci Tutorial Lanjutan tentang Ungkapan Biasa dalam Bahasa Go: Cara Menggunakan Tangkapan Berkumpulan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!