我有一个用例:需要匹配以下内容。 输入字符串:abpcdcccddd 匹配条件:匹配以' a'开头的所有字符。并以“ccc'结尾 示例:abpcdccc(第4个Poistion中的单个字符' c'在匹配中成功忽略)
你可以帮我使用Golang正则表达式吗?
答案 0 :(得分:1)
我不确定我到底知道你想要的是什么,但我可能会让你走上正轨。
如果你想匹配一个包含a
的字符串,后跟一些单词字符,然后是ccc
,那么你可以简单地使用这样的字符:
a\w+ccc
如果您希望字符串分别以a
和ccc
开头和结尾,您可以执行以下操作:
^a\w+ccc$
如果您只想允许使用小写字母等特定字符,可以将它们放入如下字符类中:
a[a-z]+ccc
希望其中一个回答你的问题。
答案 1 :(得分:0)
这完全取决于你用什么来表达"所有字符" ...它可以包括或不包括字符集,如空格(可选包括换行符),字母,数字,符号,unicode集,等
所以......
如果你真的想要"所有角色" (即包括空格)在第一个" a"和" ccc"你需要使用:
a.+ccc
如果你的意思是所有"字符"你可以使用其中一个:
a\w+ccc
a[0-9a-zA-Z_]+ccc
所有信件:
a[a-zA-Z]+ccc
所有小写字母:
a[a-z]+ccc
......根据您对该定义的实际要求,会有更多选项。
这里有一个小程序来测试其中的一些情况:
package main
import "fmt"
import "regexp"
func main() {
res := []string{
`a.+ccc`,
`a\w+ccc`,
`a[a-z]+ccc`,
}
ss := []string{
"ablablacccc",
"adadasdccc",
"sadlkasdlkcccc",
"accc",
"blaafoewoiccc",
"oirorwccc",
"abla ablaccc",
}
for _, re := range res {
r := regexp.MustCompile(re)
fmt.Printf("regular expression: %q\n", re)
for _, s := range ss {
fmt.Printf(" case %q: matches=%v match=%q\n", s, r.MatchString(s), r.FindString(s))
}
}
}
它产生的输出:
regular expression: "a.+ccc"
case "ablablacccc": matches=true match="ablablacccc"
case "adadasdccc": matches=true match="adadasdccc"
case "sadlkasdlkcccc": matches=true match="adlkasdlkcccc"
case "accc": matches=false match=""
case "blaafoewoiccc": matches=true match="aafoewoiccc"
case "oirorwccc": matches=false match=""
case "abla ablaccc": matches=true match="abla ablaccc"
regular expression: "a\\w+ccc"
case "ablablacccc": matches=true match="ablablacccc"
case "adadasdccc": matches=true match="adadasdccc"
case "sadlkasdlkcccc": matches=true match="adlkasdlkcccc"
case "accc": matches=false match=""
case "blaafoewoiccc": matches=true match="aafoewoiccc"
case "oirorwccc": matches=false match=""
case "abla ablaccc": matches=true match="ablaccc"
regular expression: "a[a-z]+ccc"
case "ablablacccc": matches=true match="ablablacccc"
case "adadasdccc": matches=true match="adadasdccc"
case "sadlkasdlkcccc": matches=true match="adlkasdlkcccc"
case "accc": matches=false match=""
case "blaafoewoiccc": matches=true match="aafoewoiccc"
case "oirorwccc": matches=false match=""
case "abla ablaccc": matches=true match="ablaccc"