Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mensimulasikan Kumpulan Menangkap Dinamakan dalam Go Regular Expressions?

Bagaimana untuk Mensimulasikan Kumpulan Menangkap Dinamakan dalam Go Regular Expressions?

Barbara Streisand
Lepaskan: 2024-12-19 11:08:17
asal
492 orang telah melayarinya

How to Simulate Named Capturing Groups in Go Regular Expressions?

Cara Mencontohi Menangkap Kumpulan dalam Go Regular Expressions

Berbeza dengan Ruby dan Java, yang menggunakan ungkapan biasa serasi PCRE yang menyokong penangkapan kumpulan, Go menggunakan pustaka RE2 Google, yang tidak menyediakan fungsi ini secara asli. Artikel ini meneroka cara untuk mencapai kesan yang serupa dalam Go.

Pertimbangkan ungkapan biasa Ruby berikut dengan menangkap kumpulan:

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

Corak ini sepadan dengan rentetan tarikh seperti "2001-01-20" dan menangkap nilai tahun, bulan dan hari ke dalam kumpulan bernama yang boleh diakses melalui nama mereka, seperti ["Tahun"].

Untuk mencontohi tingkah laku ini dalam Go, awalan "P" mesti ditambahkan untuk menangkap nama kumpulan:

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

Sebagai contoh, kod Go berikut menunjukkan cara untuk menggunakan corak yang diubah suai ini:

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

Fungsi FindStringSubmatch mengembalikan kumpulan yang ditangkap, manakala SubexpNames menyediakan nama kumpulan penangkap, membolehkan anda mengakses nilai mereka.

Dengan menambahkan awalan "P" untuk menangkap nama kumpulan dan memanfaatkan fungsi SubexpNames, adalah mungkin untuk meniru kefungsian menangkap kumpulan dalam ungkapan biasa Ruby apabila bekerja dengan perpustakaan RE2 Go.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Kumpulan Menangkap Dinamakan dalam Go Regular Expressions?. 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