|
Go hỗ trợ sẵn các thư viện về biểu thức chính quy (regular expressions). Dưới đây là một số ví dụ về các tác vụ thường gặp trong Go liên quan đến biểu thức chính quy. |
![]()
package main |
import ( "bytes" "fmt" "regexp" ) |
|
func main() { |
|
|
Đoạn dưới đây kiểm tra xem một chuỗi có khớp với một mẫu (pattern) hay không. |
match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
fmt.Println(match)
|
|
Ở phía trên, ta đã sử dụng một chuỗi mẫu trực tiếp, nhưng
cho các tác vụ khác với biểu thức chính quy, ta cần phải
thực hiện |
r, _ := regexp.Compile("p([a-z]+)ch")
|
|
Nhiều phương thức khác có sẵn trên các struct này. Dưới đây là một ví dụ về việc kiểm tra khớp mẫu như ta đã thấy ở trên. |
fmt.Println(r.MatchString("peach"))
|
|
Dòng dưới đây sẽ tìm kiếm chuỗi khớp với pattern ở trên |
fmt.Println(r.FindString("peach punch"))
|
|
Dòng dưới đây cũng tìm kiếm chuỗi đầu tiên khớp với pattern ở trên nhưng trả về chỉ số bắt đầu và kết thúc của chuỗi khớp thay vì trả về một chuỗi khớp. |
fmt.Println("idx:", r.FindStringIndex("peach punch"))
|
|
Biến thể |
|
fmt.Println(r.FindStringSubmatch("peach punch")) |
|
|
Tương tự như trên, đoạn mã này sẽ trả về thông tin về chỉ số của các matches và các submatches. |
fmt.Println(r.FindStringSubmatchIndex("peach punch"))
|
|
Các biến thể |
fmt.Println(r.FindAllString("peach punch pinch", -1))
|
|
Các biến thể |
fmt.Println("all:", r.FindAllStringSubmatchIndex(
"peach punch pinch", -1))
|
|
Truyền một số nguyên không âm ở đối số thứ hai vào các hàm này sẽ giới hạn số lượng kết quả matches trả về. |
fmt.Println(r.FindAllString("peach punch pinch", 2))
|
|
Các ví dụ ở trên của chúng ta sử dụng các chuỗi kí tự
dưới dạng đối số và sử dụng tên hàm có dạng như |
fmt.Println(r.Match([]byte("peach")))
|
|
When creating global variables with regular
expressions you can use the |
r = regexp.MustCompile("p([a-z]+)ch")
fmt.Println("regexp:", r)
|
|
Package |
fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
|
|
Biến thể |
in := []byte("a peach")
out := r.ReplaceAllFunc(in, bytes.ToUpper)
fmt.Println(string(out))
}
|
$ go run regular-expressions.go true true peach idx: [0 5]\ [peach ea] [0 5 1 3] [peach punch pinch] all: [[0 5 1 3] [6 11 7 9] [12 17 13 15]] [peach punch] true regexp: p([a-z]+)ch a <fruit> a PEACH |
|
|
Để có một tham khảo đầy đủ về
các biểu thức chính quy của Go, hãy
đọc tài liệu của package |
Ví dụ tiếp theo: JSON.