Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meniru Fungsi Kumpulan Menangkap Ruby dalam Go Regex?

Bagaimana untuk Meniru Fungsi Kumpulan Menangkap Ruby dalam Go Regex?

Mary-Kate Olsen
Lepaskan: 2024-12-18 18:14:12
asal
783 orang telah melayarinya

How to Replicate Ruby's Capturing Group Functionality in Go Regex?

Cara Mencontohi Fungsi Kumpulan Menangkap Ruby dalam Go Regex

Apabila peralihan kod daripada Ruby ke Go, keserasian ungkapan biasa boleh menjadi satu cabaran. Ruby menggunakan PCRE, manakala Go menggunakan RE2 Google, menyebabkan pembangun memerlukan cara untuk menyesuaikan ekspresi mereka.

Secara khusus, menangkap kefungsian kumpulan, yang membolehkan pengekstrakan data tertentu daripada corak yang dipadankan, memberikan cabaran. Untuk meniru kefungsian ini dalam Go, langkah berikut boleh diambil:

  1. Gunakan Kumpulan Penangkapan Dinamakan:
    Ganti kurungan yang digunakan dalam kumpulan penangkapan Ruby dengan sintaks (? P diikuti dengan corak. (?d{4}) menjadi (?Pd{4}).
  2. Nama Kumpulan Rujukan Silang:
    Panggil SubexpNames() kaedah pada ungkapan biasa yang disusun untuk mendapatkan senarai nama kumpulan tangkapan Maklumat ini akan digunakan kemudian untuk mengekstrak yang ditangkap data.
  3. Pengeluaran Menggunakan Nama Kumpulan:
    Untuk mendapatkan semula data daripada kumpulan tertentu, gunakan sintaks r.FindStringSubmatch(s)[groupName], dengan r ialah kompilasi biasa ungkapan, s ialah rentetan input, dan groupName ialah nama kumpulan yang dikehendaki.

Untuk contoh, untuk mengekstrak tahun daripada rentetan tarikh menggunakan ungkapan biasa (?Pd{4})-(?Pd{2})-(?Pd{2}), anda akan menggunakan kod 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

Kod ini akan mengeluarkan:

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

Barisan pertama menunjukkan nilai ditangkap mengikut tertib, manakala baris kedua menunjukkan nama kumpulan tangkapan. Dengan menggunakan teknik ini, anda boleh mencapai fungsi kumpulan menangkap yang serupa dalam Go seperti dalam Ruby.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi Kumpulan Menangkap Ruby dalam Go Regex?. 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