Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 字符串后字符串模式的正则表达式_Regex_Go_Regex Group_Regex Greedy - Fatal编程技术网

Regex 字符串后字符串模式的正则表达式

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

我有一个这样的字符串,用点分隔4个单词

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_\-]+)+$