Menu

How to Extract Regular Expression in Go language?

How to extract all regular expression matches from string with Go language?

In this tutorial, we will create a program in Go language to extract all matching regular expression from a provided string. We are going to use standard packages from Go languages library;

Import required packages (Golang):

  • fmt - Implement formatted input output in Go.
  • regexp - This package allows us to search using regular expressions.
package main

import (
    "fmt"
    "regexp"
)

Extract regex from string

Let's declare a variable containing the string to extract regex from.

func main() {
    str := "echo $((1+2)) $((?)))"
}

Now, we can use the regex package with MustCompile() function to define a regular expression. (assign a varible for further use and easy reading)

re := regexp.MustCompile(`\$\(\((.*?)\)\)`)

To extract all regular expression matches from a string a store that into a list varible use FindAllStringSubmatch(string. int) with the assign variable.

command := re.FindAllStringSubmatch(str, -1)

We can use a for loop to go through all matched patterns.

for i := range command {
    fmt.Println("Match found :", command[i][1])
}

Take a look at the final code:

package main

import (
    "fmt"
    "regexp"
)

func main() {

    str := "echo $((1+2)) $((?)))"

    re := regexp.MustCompile(`\$\(\((.*?)\)\)`)

    command := re.FindAllStringSubmatch(str, -1)

    for i := range command {
        fmt.Println("Message :", command[i][1])
    }
}