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 關注
- 138 瀏覽
添加回答
舉報