Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Meniru Kumpulan Menangkap dalam Ungkapan Biasa Go?

Bagaimanakah Saya Boleh Meniru Kumpulan Menangkap dalam Ungkapan Biasa Go?

Mary-Kate Olsen
Lepaskan: 2024-12-31 02:06:14
asal
830 orang telah melayarinya

How Can I Emulate Capturing Groups in Go Regular Expressions?

Menangkap Kumpulan dalam Ungkapan Biasa Go

Dalam Go, ungkapan biasa menggunakan perpustakaan RE2, yang tidak mempunyai sokongan asli untuk menangkap kumpulan seperti yang terdapat dalam Ruby dan bahasa lain. Walau bagaimanapun, terdapat penyelesaian untuk mencontohi fungsi ini.

Untuk mencapai tingkah laku yang diingini, seseorang perlu menambahkan "P" pada nama kumpulan, seperti yang digambarkan dalam ungkapan dikemas kini berikut:

(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
Salin selepas log masuk

Untuk mengekstrak nilai daripada kumpulan penangkap, seseorang boleh menggunakan fungsi re.SubexpNames() untuk mendapatkan nama kumpulan dan merujuk silang dengan padanan data.

Pertimbangkan contoh berikut:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`)
    fmt.Printf("%#v\n", r.FindStringSubmatch(`2015-05-27`))
    fmt.Printf("%#v\n", r.SubexpNames())
}
Salin selepas log masuk

Dalam contoh ini, r.FindStringSubmatch() mengembalikan subrentetan yang sepadan dan r.SubexpNames() yang sepadan memberikan nama kumpulan:

[]string{"2015", "05", "27"}
[]string{"", "Year", "Month", "Day"}
Salin selepas log masuk

Oleh itu, seseorang boleh mengakses tahun, bulan dan hari yang ditangkap dengan mudah menggunakan nama kumpulan, menawarkan fungsi yang sama untuk menangkap kumpulan dalam bahasa lain.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Kumpulan Menangkap dalam Ungkapan Biasa Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan