字符串模式后字符串的正则表达式
Regex for string after string pattern
我有一个这样的字符串(4个单词用点分隔)
Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps
我需要编写一个正则表达式来查找上述模式。
- 可以有 4 个或更多字段,用点分隔
- 第一个词应该正好是
Exactfoobar.
- 第2个和第3个单词不能有大写但可以有-_
- 第 4 个单词等等可以用 -_
大写
我正在考虑使用群组,但它在这里不起作用:
^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_-]*)+$
^
- 字符串开始
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+ 个字母、数字或 _
或 -
$
- 字符串结尾。
^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$
我有一个这样的字符串(4个单词用点分隔)
Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps
我需要编写一个正则表达式来查找上述模式。
- 可以有 4 个或更多字段,用点分隔
- 第一个词应该正好是
Exactfoobar.
- 第2个和第3个单词不能有大写但可以有-_
- 第 4 个单词等等可以用 -_ 大写
我正在考虑使用群组,但它在这里不起作用:
^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_-]*)+$
^
- 字符串开始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+ 个字母、数字或_
或-
$
- 字符串结尾。
^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$