我需要从查询中获取所有group by
字段
https://play.golang.org/p/5h_IExbQb_D
package main
import (
"fmt"
"regexp"
)
func main() {
query := `SELECT sum(a) as a, count(b) as b, c as c, d as d, e as e
FROM table
group by c, d, e order by c`
re := regexp.MustCompile(`(group by) ((.)*,?)*`)
fmt.Printf("%q\n", re.FindAll([]byte(query), -1))
}
它返回:
["group by c, d, e order by c"]
但是预期输出是
["c, d, e"]
答案 0 :(得分:3)
在您的模式中,您使用3个捕获组。
您可以使用一个捕获组,并在代码中访问该捕获组以捕获c, d, e
。
\bgroup by (\w+(?:, \w+)*)
说明
\bgroup by
匹配组by之前是单词边界\b
(
捕获组
\w+
匹配1个以上的字符字符(?:, \w+)*
重复0+次匹配一个空格和1+个单词字符。)
关闭捕获组您可以使用字符类\w
扩展匹配的[\w]
并添加您要匹配的内容。
答案 1 :(得分:1)