我有一个像这样的字符串(由点分隔的4个单词)
Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps
我需要编写一个正则表达式来找到上述模式。
Exactfoobar.
我当时在考虑使用群组,但在这里不起作用:
^Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-zA-Z0-9_\-.])+$
我应该如何考虑将一个字符串接另一个字符串匹配。有可能吗?
在golang中尝试此操作,但似乎无法正确使用上述正则表达式
package main
import (
"fmt"
"regexp"
)
func main() {
var validID = regexp.MustCompile(`^ Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-z0-9_\-.])+$`)
fmt.Println(validID.MatchString("Exactfoobar.somestring.some_other-string.someStringwithCaps"))
}
结果:
false
谢谢
答案 0 :(得分:1)
您可以使用
^Exactfoobar(?:\.[a-z0-9][a-z0-9_-]*){2}(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+$
请参见regex demo
^
-字符串的开头Exactfoobar
-几个字(?:\.[a-z0-9][a-z0-9_-]*){2}
-两个重复的.
,然后是一个小写字母或数字,然后是0+个小写字母或数字,_
或-
(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+
-重复1次或更多次
\.
-点[a-zA-Z0-9]
-字母或数字[a-zA-Z0-9_-]*
-0+个字母,数字或_
或-
$
-字符串的结尾。答案 1 :(得分:0)
^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$