如果序列匹配如下所示,我理想的正則運算式將回傳 true。
A12T-4GH7-QPL9-3N4M
這是我嘗試過的。
package main
import "fmt"
import "regexp"
func main() {
a := "A12T-A12T"
re := regexp.MustCompile("[a-zA-Z0-9]-[a-zA-Z0-9]")
fmt.Println(re.MatchString(a))
b := "A12T-A12T-"
re2 := regexp.MustCompile("[a-zA-Z0-9]-[a-zA-Z0-9]-")
fmt.Println(re2.MatchString(b))
}
觀察變數 a 如何為真,但一旦 b 被呼叫,它就會回傳 false 并帶有額外的連字符。
我的問題是,如何為這個理想序列 A12T-4GH7-QPL9-3N4M 在字母數字字符之間添加多個連字符
uj5u.com熱心網友回復:
你需要使用
regexp.MustCompile("^[a-zA-Z0-9] (?:-[a-zA-Z0-9] )*$")
模式匹配
^- 字串的開始[a-zA-Z0-9]- 一個或多個字母數字(?:-[a-zA-Z0-9] )*- 出現零次或多次連字符,然后出現一個或多個字母數字字符$- 字串的結尾。
請參閱正則運算式演示。
uj5u.com熱心網友回復:
您使用的正則運算式僅匹配 3 個(在第二個示例中為 4 個)字符。
如果你想匹配一組由連字符分隔的字符,你應該嘗試像這樣的正則運算式 ([a-zA-Z0-9] -) [a-zA-Z0-9]
這轉換為代碼:
package main
import "fmt"
import "regexp"
func main() {
a := "A12T-4GH7-QPL9-3N4M"
re := regexp.MustCompile("([a-zA-Z0-9] -) [a-zA-Z0-9] ")
fmt.Println(re.MatchString(a))
}
https://play.golang.org/p/dMoIOaeUHBa
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321131.html
上一篇:如何創建一個正則運算式來匹配任何具有2維但不匹配任何維度的東西?
下一篇:正則運算式2字串中的數字
