我正在使用Package 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
个人?有人能告诉我原因吗?以及如何修复它,谢谢.
以下是应该匹配的规则:
我想从String
中抽出Prefix:${middle}#${number}
美元.
-
${middle}
条规则:- 允许的字符:字母、数字、下划线、下划线、圆点
- 必须以字母或数字开头
- 不能以点结尾
-
${number}
条规则:- 应该是数字
-
Prefix:${middle}#${number}
可以出现在字符串的开头或结尾,也可以出现在字符串中间,但:- 出现在字符串的开头,则需要后跟空格或
/n
; - 出现在字符串末尾,则需要在其前面加一个空格或
/n
; - 位于字符串中间,但它的前面和后面都需要换行符或空格.
- 出现在字符串的开头,则需要后跟空格或