# Go Cheatsheet - RegExp

## Regular Expression

We can use go's `regexp` module for regular expression match.


### Quick Match
```go
matched, _ := regexp.MatchString("a[a-z]+e", "apple")
fmt.Println("Matched:", matched) // true
```

### Compile then check match

```go
r := regexp.MustCompile("a([a-z]+)e")

fmt.Println(r.MatchString("apple"))   // true
fmt.Println(r.MatchString("abdomen")) // true
fmt.Println(r.MatchString("amazing")) // false
```

### Find String
```go
fmt.Println(r.FindString("apple"))   // apple
fmt.Println(r.FindString("abdomen")) // abdome
fmt.Println(r.FindString("amazing")) // ""
```

### Find Submatch / Match groups
```go
fmt.Println(r.FindStringSubmatch("apple")) // [apple ppl], length-2 slice
fmt.Println(
	r.FindStringSubmatch("abdomen"),
) // [abdome bdom], length-2 slice
fmt.Println(r.FindStringSubmatch("amazing")) // [], empty slice
```

### Replace string

```go
s := "I want some apple please"
fmt.Println(r.ReplaceAllString(s, "pear")) // I want some pear plepear
fmt.Println(r.ReplaceAllStringFunc(s, func(str string) string {
	return strings.ToUpper("banana")
})) // I want some BANANA pleBANANA
```
