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
Barbara Streisandasal
2024-12-19 11:08:17485semak imbas

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})

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})

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())
}

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!

Kenyataan:
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