在Go中匹配前进单词而不向前看

时间:2015-01-06 19:57:40

标签: regex go

我正在尝试从查询字符串中检索表格(例如,' select foo from bar limit 10'应该返回' bar')。

我相信&#39; (?<=\bfrom\\s)(\\w+)&#39;是我正在寻找的东西,但Go regexp包不支持它。 (http://play.golang.org/p/MJ3DUk6uuC

1 个答案:

答案 0 :(得分:3)

您仍然可以检测到“from xxx”,而无需通过 not supported 查看前瞻语法re2
由于您将捕获“from”,因此您需要将其从结果中删除。

请参阅playground

r := regexp.MustCompile("(?:\\bfrom\\s)(\\w+)")
res := r.FindAllString(strings.ToLower("select foo from bar limit 10"), 1)
if len(res) != 1 {
    panic("unable")
}
i := strings.LastIndex(res[0], " ")
fmt.Println(res[0][i+1:], i)

输出:

bar 4