1 回答
TA贡献1818条经验 获得超8个赞
您可以使用以下正则表达式regexp.FindAllStringSubmatch:
(?:\s|^)(Prefix:[a-zA-Z0-9][\w.-]*[^.]#\d+)(?:\s|$)
请参阅正则表达式演示。
请注意,此模式仅在将字符串中的空格加倍后才有效,因为空格边界(?:\s|^)和(?:\s|$), 都是消耗模式,并且会阻止获得连续匹配。因此,在运行上述正则表达式之前应该使用regexp.MustCompile(\s或类似的。).ReplaceAllString(str, "$0$0")
详情:
(?:\s|^)- 空格或字符串开头(Prefix:[a-zA-Z0-9][\w.-]*[^.]#\d+)- 第 1 组:Prefix:- 固定字符串[a-zA-Z0-9]- 一个字母数字[\w.-]*- 零个或多个字母、数字、下划线、点或连字符[^.]- 其他字符.#- 一个#字符\d+- 一位或多位数字(?:\s|$)- 空格或字符串结尾
请参阅Go 演示:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "Prefix:middle#113 build: xxxxxx Prefix:middle#6\nPrefix:middle#16026Prefix:middle#1111\n Prefix:middle#110 Prefix:middle.#2 Prefix:middl.e#111 Prefix:middle#112"
re := regexp.MustCompile(`(?:\s|^)(Prefix:[a-zA-Z0-9][\w.-]*[^.]#\d+)(?:\s|$)`)
matchs := re.FindAllStringSubmatch(regexp.MustCompile(`\s`).ReplaceAllString(str, "$0$0"), -1)
for _, m := range matchs {
fmt.Println(m[1])
}
}
输出:
Prefix:middle#113
Prefix:middle#6
Prefix:middle#110
Prefix:middl.e#111
Prefix:middle#112
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报
