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

Bagaimanakah Saya Boleh Menggunakan Menangkap Kumpulan dalam Ungkapan Biasa Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 12:37:09869semak imbas

How Can I Use Capturing Groups in Go Regular Expressions?

Merakam Kumpulan dalam Ungkapan Biasa Go

Apabila mengalihkan kod daripada Ruby ke Go, pembangun sering menghadapi masalah keserasian dengan ungkapan biasa. Ruby menyokong menangkap kumpulan dalam regex, ciri yang tidak tersedia secara asli dalam pustaka RE2 Go.

Menulis Semula Ungkapan untuk Go

Untuk meniru fungsi kumpulan menangkap, langkah berikut boleh diambil:

1. Gunakan Kumpulan Tangkapan Bernama:
Daripada menggunakan kurungan sudut, tambahkan "P" antara kurungan pembukaan dan nama kumpulan, cth., (?Pd{4}) untuk kumpulan tahun.

2. Nama Kumpulan Rujukan Silang:
Gunakan fungsi regexp.SubexpNames() untuk mendapatkan senarai nama kumpulan tangkapan.

3. Akses Data Ditangkap:
Gunakan nama kumpulan yang sesuai sebagai hujah untuk berfungsi seperti FindStringSubmatch untuk mendapatkan semula nilai yang ditangkap.

Contoh:

package main

import (
    "fmt"
    "regexp"
)

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

Output:

Matched Substrings: [2015 05 27]
Group Names: [ Year Month Day ]

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Menangkap Kumpulan dalam Ungkapan Biasa Go?. 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