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 关注
- 118 浏览
添加回答
举报