我正在使用包regexp在 Golang 中查找所有 mactch 子字符串,但得到了意想不到的结果。这是我的代码:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "build: xxxxxx Prefix:middle#6\nPrefix:middle#16026Prefix:middle#1111\n Prefix:middle#110 Prefix:middle.#2 Prefix:middl.e#111 Prefix:middle#112"
regexpStr := "\\bPrefix:([a-zA-Z0-9]+[\\w-.]+[^.])#[0-9]+"
re := regexp.MustCompile(regexpStr)
matchs := re.FindAllString(str, -1)
fmt.Println(matchs)
}
您可以在https://go.dev/play/p/XFSMW09MKxV中看到它。
预期的:
[Prefix:middle#6 Prefix:middle#110 Prefix:middl.e#111 Prefix:middle#112]
但我得到了:
[Prefix:middle#6 Prefix:middle#16026 Prefix:middle#110 Prefix:middl.e#111 Prefix:middle#112]
为什么要Prefix:middle#16026
加工?有人能告诉我原因吗?以及如何修复它,谢谢。
以下是应该匹配的规则:
我想提取Prefix:${middle}#${number}
一个String
.
${middle}
规则:
允许的字符:字母、数字、下划线、下划线、点
必须以字母或数字开头
不能以点结尾
${number}
规则:
应该是数字
Prefix:${middle}#${number}
可以出现在字符串的开头或结尾,也可以出现在字符串的中间,但是:
出现在字符串的开头,后面需要跟一个空格或/n
;
出现在字符串的末尾,需要在其前面加一个空格或/n
;
在字符串的中间,但它的前后需要一个换行符或一个空格。
弑天下
相关分类