Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2023-07-12 09:27:25
asal
977 orang telah melayarinya

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"
Salin selepas log masuk
Salin selepas log masuk

)

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])
}
Salin selepas log masuk

}

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"
Salin selepas log masuk
Salin selepas log masuk

)

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])
}
Salin selepas log masuk

}

输出结果:
<h1>标题</h1>
<h2>副标题</h2>
<h1>另一个标题</h1>
<h2>另一个副标题</h2>

在这个例子中,我们使用了正则表达式<h(d)>(.*?)</h>。其中,<h(d)>表示匹配<h1><h2>标签,(.*?)表示非贪婪模式匹配标签内容,</h>表示匹配</h1></h2>闭合标签,

Contoh 2:

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

pakej utama🎜🎜import (🎜rrreee🎜)🎜🎜func main() {🎜rrreee🎜}🎜🎜Hasil keluaran: 🎜<h1>tajuk&glt;/h2>Tajuk&glt;/h2> t; 🎜< ;h1>Tajuk lain</h1>🎜<h2>Sarikata lain</h2>🎜🎜Dalam contoh ini, kami menggunakan ungkapan biasa <h(d)> h >. Antaranya, <h(d)> bermaksud memadankan <h1> atau teg <h2>, (. * ?) bermaksud mod tidak tamak yang sepadan dengan kandungan teg, </h > bermaksud sepadan dengan </h1> 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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan