我需要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"]
在您的模式中,您使用3个捕获组。
您可以使用一个捕获组,并在代码中访问该捕获组c, d, e
。
\bgroup by (\w+(?:, \w+)*)
说明
\bgroup by
匹配分组依据,后跟单词边界 \b
(
捕获组
\w+
匹配1个以上的字符(?:, \w+)*
重复0+次匹配一个空格和1+个单词字符。)
关闭捕获组您可以\w
通过使用字符类扩展匹配,[\w]
并添加允许匹配的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句