在Go語(yǔ)言中,使用regexp
包處理正則表達(dá)式時(shí),可以通過(guò)*
、+
和?
這三個(gè)量詞來(lái)表示重復(fù)模式。
*
表示匹配前面的子表達(dá)式0次或多次。例如,a*
表示匹配0個(gè)或多個(gè)連續(xù)的a
字符。package main
import (
"fmt"
"regexp"
)
func main() {
pattern := regexp.MustCompile(`a*`)
result := pattern.FindString("aaabbbccc")
fmt.Println(result) // 輸出: "aaa"
}
+
表示匹配前面的子表達(dá)式1次或多次。例如,a+
表示匹配1個(gè)或多個(gè)連續(xù)的a
字符。package main
import (
"fmt"
"regexp"
)
func main() {
pattern := regexp.MustCompile(`a+`)
result := pattern.FindString("aaabbbccc")
fmt.Println(result) // 輸出: "aaa"
}
?
表示匹配前面的子表達(dá)式0次或1次。例如,a?
表示匹配0個(gè)或1個(gè)連續(xù)的a
字符。package main
import (
"fmt"
"regexp"
)
func main() {
pattern := regexp.MustCompile(`a?`)
result := pattern.FindString("aaabbbccc")
fmt.Println(result) // 輸出: "a"
}
你還可以使用{m,n}
來(lái)表示重復(fù)模式的次數(shù)范圍。例如,a{2,3}
表示匹配2個(gè)或3個(gè)連續(xù)的a
字符。
package main
import (
"fmt"
"regexp"
)
func main() {
pattern := regexp.MustCompile(`a{2,3}`)
result := pattern.FindString("aaabbbccc")
fmt.Println(result) // 輸出: "aa"
}
注意:在使用{m,n}
時(shí),如果m
大于n
,則匹配0次。例如,a{3,2}
表示匹配0個(gè)或2個(gè)連續(xù)的a
字符。