Regex 字符串后字符串模式的正则表达式
我有一个这样的字符串,用点分隔4个单词Regex 字符串后字符串模式的正则表达式,regex,go,regex-group,regex-greedy,Regex,Go,Regex Group,Regex Greedy,我有一个这样的字符串,用点分隔4个单词 Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps 我需要写一个正则表达式来找到上面的模式 可能有4个或更多字段被一个点分隔 第一个单词应该是Exactfoobar。 第二个和第三个单词不能有大写字母,但可以有大写字母-_ 第四个单词等可以有大写字母-_ 我曾考虑使用小组,但在这里不起作用: ^Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-zA-Z
Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps
我需要写一个正则表达式来找到上面的模式
可能有4个或更多字段被一个点分隔
第一个单词应该是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
谢谢您可以使用
^Exactfoobar(?:\.[a-z0-9][a-z0-9_-]*){2}(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+$
见
^-字符串的开头
一些单词
?:\[a-z0-9][a-z0-9\-]*{2}-a的两个重复,然后是一个小写字母或数字,然后是0+小写字母或数字,或-
?:\[a-zA-Z0-9][a-zA-Z0-9\-]*+-1次或多次重复
\-点
[a-zA-Z0-9]-字母或数字
[a-zA-Z0-9_-]*-0+字母、数字或u或-
$-字符串的结尾。
为什么不在点字符上拆分,然后丢弃第一个元素,因为它始终是Exactfoobar?这样你就不需要正则表达式了,正则表达式应该更快更可读。这是一个错误的解决方案,请参阅。单词必须以字母或数字开头。我想你是对的,尽管这不是明确的要求谢谢@Wiktor!这就像我在想的一样。什么事mean@Sumitk看见
^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$