在Go語言中,使用regexp
包可以實現正則表達式的分組捕獲。分組捕獲是通過在正則表達式中使用圓括號()
來實現的。圓括號內的模式將被捕獲為一個分組,可以在后續的處理中引用這個分組。
下面是一個簡單的示例,展示了如何使用分組捕獲來提取字符串中的名字和年齡:
package main
import (
"fmt"
"regexp"
)
func main() {
// 定義一個包含名字和年齡的字符串
input := "My name is John Doe and I am 30 years old."
// 定義一個正則表達式,使用圓括號進行分組捕獲
pattern := `(\w+) is (\d+) years old.`
// 編譯正則表達式
re, err := regexp.Compile(pattern)
if err != nil {
fmt.Println("Error compiling regex:", err)
return
}
// 使用正則表達式匹配輸入字符串
match := re.FindStringSubmatch(input)
// 檢查是否匹配成功
if match != nil {
// 輸出捕獲的分組
fmt.Println("Name:", match[1])
fmt.Println("Age:", match[2])
} else {
fmt.Println("No match found")
}
}
在這個示例中,我們定義了一個正則表達式(\w+) is (\d+) years old.
,其中(\w+)
和(\d+)
是兩個分組捕獲。(\w+)
匹配一個或多個字母數字字符(即名字),(\d+)
匹配一個或多個數字(即年齡)。
我們使用regexp.Compile()
函數編譯正則表達式,并使用FindStringSubmatch()
方法匹配輸入字符串。FindStringSubmatch()
方法返回一個二維切片,其中第一個元素是整個匹配的字符串,后面的元素是捕獲的分組。在這個例子中,match[1]
是名字,match[2]
是年齡。