Golang regExp匹配字符直到字符串(不包括子字符串)

时间:2017-01-04 16:39:20

标签: regex go

我有一个用例:需要匹配以下内容。 输入字符串:abpcdcccddd 匹配条件:匹配以' a'开头的所有字符。并以“ccc'结尾 示例:abpcdccc(第4个Poistion中的单个字符' c'在匹配中成功忽略)

你可以帮我使用Golang正则表达式吗?

2 个答案:

答案 0 :(得分:1)

我不确定我到底知道你想要的是什么,但我可能会让你走上正轨。

如果你想匹配一个包含a的字符串,后跟一些单词字符,然后是ccc,那么你可以简单地使用这样的字符:

a\w+ccc

如果您希望字符串分别以accc开头和结尾,您可以执行以下操作:

^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"