regex - 带有连字符的字母数字序列无法使用 Go 的正则表达式
问题描述
如果序列匹配如下所示,我理想的正则表达式将返回 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 ,它就会返回带有额外连字符的假。
我的问题是,如何在这个理想序列 A12T-4GH7-QPL9-3N4M 的字母数字字符之间添加多个连字符
解决方案
您使用的正则表达式仅匹配 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))
}
推荐阅读
- amazon-web-services - 从 Athena 获取数据并粘合权限
- spring - 如何实现支持 Spring 分页的 feign 请求?
- sccm - 查询 AD 以查找 OU 中用户正在使用的计算机
- ruby-on-rails - 我无法访问 rails 控制台
- java - 比较 JSON 和数组
- json - 无法从 JSON API 获取数据
- mysql - 如何在 MySQL 中搜索作为值的子字符串的行?
- javascript - 在页面上的所有脚本完全加载后运行 js 函数
- c# - NUnit 全局 SetupFixture 未执行
- hadoop - 将没有引号的字符串数据加载到 Hive