Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tutorial Lanjutan tentang Ungkapan Biasa dalam Bahasa Go: Cara Menggunakan Rujukan Balik

Tutorial Lanjutan tentang Ungkapan Biasa dalam Bahasa Go: Cara Menggunakan Rujukan Balik

WBOY
WBOYasal
2023-07-12 09:27:25881semak imbas

Tutorial Lanjutan Go Language Regular Expression: Cara Menggunakan Backreferences

Pengenalan:
Regular expression ialah alat pemadanan rentetan yang berkuasa dan merupakan salah satu kemahiran yang diperlukan untuk pembangun yang perlu memproses teks. Pakej biasa bahasa Go menyediakan pelbagai fungsi, termasuk rujukan belakang Artikel ini akan memperkenalkan cara menggunakan rujukan belakang untuk padanan ungkapan biasa lanjutan.

1. Konsep rujukan belakang:
Rujukan belakang merujuk kepada penggunaan rentetan yang telah dipadankan dalam ungkapan biasa sebagai sebahagian daripada padanan berikutnya. Dengan menggunakan rujukan belakang, kita boleh memadankan corak kompleks dengan lebih tepat, seperti memadankan perkataan atau teg yang berulang.

2. Sintaks untuk menggunakan rujukan belakang:
Dalam ungkapan biasa bahasa Go, gunakan simbol $ diikuti dengan nombor untuk mewakili rujukan belakang. Apa yang dipanggil "nombor" merujuk kepada nombor siri kumpulan penangkap dalam ungkapan biasa sebelumnya.

Contoh 1:
Andaikan kita mempunyai senarai rentetan dan perlu mencari perkataan yang sama berturut-turut di dalamnya.

pakej utama

import (

"fmt"
"regexp"

)

func main() {

str := "hello hello world world world"

re := regexp.MustCompile(`(w+)s+`)
matches := re.FindAllStringSubmatch(str, -1)

for _, match := range matches {
    fmt.Println(match[0])
}

}

Hasil keluaran:
hello hello
world world world

contoh biasa ini )s+ . Antaranya, ( w+ ) mewakili perkataan, s+ mewakili satu atau lebih ruang dan mewakili rujukan belakang kepada kumpulan penangkapan sebelumnya ialah, perkataan yang dipadankan. (w+)s+。其中,(w+)表示一个单词,s+表示一个或多个空格,表示反向引用前面的捕获组,即匹配到的单词。

示例2:
假设我们有一个HTML字符串,需要匹配其中重复的标签。

package main

import (

"fmt"
"regexp"

)

func main() {

html := "<h1>标题</h1><h2>副标题</h2><h1>另一个标题</h1><h2>另一个副标题</h2>"

re := regexp.MustCompile(`<h(d)>(.*?)</h>`)
matches := re.FindAllStringSubmatch(html, -1)

for _, match := range matches {
    fmt.Println(match[0])
}

}

输出结果:
4a249f0d628e2318394fd9b75b4636b1标题473f0a7621bec819994bb5020d29372a
c1a436a314ed609750bd7c7d319db4da副标题2e9b454fa8428549ca2e64dfac4625cd
4a249f0d628e2318394fd9b75b4636b1另一个标题473f0a7621bec819994bb5020d29372a
c1a436a314ed609750bd7c7d319db4da另一个副标题2e9b454fa8428549ca2e64dfac4625cd

在这个例子中,我们使用了正则表达式4238498ac8cd3c608e196fe41a474f88(.*?)7f9de5593b389930cbdda4720ecb089f。其中,4238498ac8cd3c608e196fe41a474f88表示匹配4a249f0d628e2318394fd9b75b4636b1c1a436a314ed609750bd7c7d319db4da标签,(.*?)表示非贪婪模式匹配标签内容,7f9de5593b389930cbdda4720ecb089f表示匹配473f0a7621bec819994bb5020d29372a2e9b454fa8428549ca2e64dfac4625cd闭合标签,

Contoh 2:

Andaikan kita mempunyai rentetan HTML dan perlu memadankan teg berulang di dalamnya.

pakej utama🎜🎜import (🎜rrreee🎜)🎜🎜func main() {🎜rrreee🎜}🎜🎜Hasil keluaran: 🎜4a249f0d628e2318394fd9b75b4636b1tajuk&glt;/h2>Tajuk&glt;/h2> t; 🎜< ;h1>Tajuk lain473f0a7621bec819994bb5020d29372a🎜c1a436a314ed609750bd7c7d319db4daSarikata lain2e9b454fa8428549ca2e64dfac4625cd🎜🎜Dalam contoh ini, kami menggunakan ungkapan biasa 4238498ac8cd3c608e196fe41a474f88 h >. Antaranya, 4238498ac8cd3c608e196fe41a474f88 bermaksud memadankan 4a249f0d628e2318394fd9b75b4636b1 atau teg c1a436a314ed609750bd7c7d319db4da, (. * ?) bermaksud mod tidak tamak yang sepadan dengan kandungan teg, 991220c0dd17f19e1035a145897fbd44 bermaksud sepadan dengan 473f0a7621bec819994bb5020d29372a atau </ h2&gt ; menutup teg, menunjukkan rujukan kembali kepada kumpulan tangkapan sebelumnya, iaitu jenis teg yang dipadankan. 🎜🎜Kesimpulan: 🎜Rujukan belakang ialah ciri berkuasa dalam ungkapan biasa bahasa Go, yang boleh mencapai padanan corak yang lebih tepat. Untuk senario seperti memproses teks kompleks atau rentetan HTML, rujukan belakang boleh memberikan penyelesaian yang mudah. Walau bagaimanapun, apabila menggunakan rujukan belakang, anda perlu memberi perhatian kepada susunan kumpulan penangkapan dan sintaks ungkapan biasa piawai untuk mendapatkan hasil padanan yang tepat. Saya harap artikel ini dapat membantu pembaca memahami sepenuhnya dan menggunakan rujukan semula serta meningkatkan kemahiran penggunaan ungkapan biasa mereka. 🎜

Atas ialah kandungan terperinci Tutorial Lanjutan tentang Ungkapan Biasa dalam Bahasa Go: Cara Menggunakan Rujukan Balik. 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