如何使用正则表达式获取golang中括号内的所有内容

时间:2016-09-14 10:32:07

标签: regex go

我试图在golang正则表达式中的以下sql语句的外括号内获取所有内容。

Categories
(// = outside bracket
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)//=outside bracket

我如何使用正则表达式来识别外部括号并返回外部括号之间的所有内容?

1 个答案:

答案 0 :(得分:2)

您只需找到第一个(,然后匹配任何字符,直到最后)

`(?s)\((.*)\)`

<强>详情:

  • (?s) - 允许.匹配任何字符,包括换行符
  • \( - 文字(字符
  • (.*) - 子匹配1捕获任何零个或多个字符
  • \) - 文字)符号。

请参阅Go demo

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := `Categories
(// = outside bracket
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)//=outside bracket`
    re := regexp.MustCompile(`(?s)\((.*)\)`)

    m := re.FindAllStringSubmatch(s,-1)
    fmt.Printf("Capture value: %s", m[0][1])
}