包主
请考虑以下代码:
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[A-Z]*")
fmt.Println(re.ReplaceAllString("ABcd", "."))
}
Run Code Online (Sandbox Code Playgroud)
它输出:
.光盘
我已经在regexpal上测试了我的正则表达式和字符串.它应该只匹配AB.什么匹配c和d那之间插入一个.?
该ABcd字符串被正则表达式引擎视为
EMPTY_STRING A EMPTY_STRING B EMPTY_STRING c EMPTY_STRING d EMPTY_STRING
Run Code Online (Sandbox Code Playgroud)
本[A-Z]*场比赛零个或多个 ASCII大写字母.也就是说,它可能匹配EMTPY_STRING.它的工作原理如下:
EMPTY_STRING A EMPTY_STRING B EMPTY_STRING c EMPTY_STRING d EMPTY_STRING
| ------------- First match ------------ | |-2nd one-| |-3rd one-|
Run Code Online (Sandbox Code Playgroud)
导致.c.d..
因此,您应该考虑使用+或{1,}量词而不是*(= {0,}).
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |