在Go语言中,使用regexp
包处理正则表达式时,可以通过*
、+
和?
这三个量词来表示重复模式。
*
表示匹配前面的子表达式0次或多次。例如,a*
表示匹配0个或多个连续的a
字符。
package main import ( "fmt" "regexp" ) func main() { pattern := regexp.MustCompile(`a*`) result := pattern.FindString("aaabbbccc") fmt.Println(result) // 输出: "aaa" }
+
表示匹配前面的子表达式1次或多次。例如,a+
表示匹配1个或多个连续的a
字符。
package main import ( "fmt" "regexp" ) func main() { pattern := regexp.MustCompile(`a+`) result := pattern.FindString("aaabbbccc") fmt.Println(result) // 输出: "aaa" }
?
表示匹配前面的子表达式0次或1次。例如,a?
表示匹配0个或1个连续的a
字符。
package main import ( "fmt" "regexp" ) func main() { pattern := regexp.MustCompile(`a?`) result := pattern.FindString("aaabbbccc") fmt.Println(result) // 输出: "a" }
你还可以使用{m,n}
来表示重复模式的次数范围。例如,a{2,3}
表示匹配2个或3个连续的a
字符。
package main import ( "fmt" "regexp" ) func main() { pattern := regexp.MustCompile(`a{2,3}`) result := pattern.FindString("aaabbbccc") fmt.Println(result) // 输出: "aa" }
注意:在使用{m,n}
时,如果m
大于n
,则匹配0次。例如,a{3,2}
表示匹配0个或2个连续的a
字符。