# Regular expressions

Functions for working with regular expressions are described here.

* [FindFirstRegExp( str src, str re ) arr.str](#findfirstregexp-str-src-str-re-arr-str)
* [FindRegExp( str src, str re ) arr.arr.str](#findregexp-str-src-str-re-arr-arr-str)
* [Match( str s, str re ) bool](#match-str-s-str-re-bool)
* [RegExp( str src, str re ) str](#regexp-str-src-str-re-str)
* [ReplaceRegExp( str src, str re, str repl ) str](#replaceregexp-str-src-str-re-str-repl-str)

## Functions

### FindFirstRegExp(str src, str re) arr.str

The *FindFirstRegExp* function finds the first occurrence of the regular expression *re* in the specified string *src*. The function returns an array of strings. The first element contains a substring that matches the regular expression, the remaining elements contain values of **(...)** groups, if they are defined in the regular expression.

```go
arr.str a &= FindFirstRegExp(`This45i33s a isi777s inis1i2sg`, `is(\d*)i(\d+)s`)
// a = {`is45i33s`, `45`, `33`}
```

### FindRegExp(str src, str re) arr.arr.str

The *FindRegExp* function finds all occurrences of the *re* regular expression in the specified string *src*. The function returns an array of arrays. The first element in each array contains a substring that matches the regular expression.

```go
arr.arr.str a &= FindRegExp(`My email is xyz@example.com`, `(\w+)@(\w+)\.(\w+)`)
// a = { { `xyz@example.com`, `xyz`, `example`, `com`} }
a &= FindRegExp(`This is a test string`, `i.`)
// a = { { `is` }, {`is`}, {`in`} }
```

### Match(str s, str re) bool

The *Match* function reports whether the string *s* contains any match of the regular expression pattern *re*.

```go
bool a = Match(`somethiabng striabnbg`, `a.b`)  // false
a = Match(`somethianbg string`, `a.b`) // true
```

### RegExp(str src, str re) str

The *RegExp* function returns the first occurrence of the regular expression *re* in the specified line *src*. If no match is found, an empty string is returned.

```go
  str input = "This is a string тестовое значение"
  ret = RegExp(input, `is (.{2})`) + RegExp(input, `е(.+?)е`)
  // isстово
```

### ReplaceRegExp(str src, str re, str repl) str

The *FindRegExp* function replaces matches of the *re* regular expression with the replacement string *repl. You can specify* $i *or* ${i} *in* repl\* for i-the submatch.

```go
str s = ReplaceRegExp("This is a string", `i(.{2})`, "xyz") 
// Thxyzxyza strxyz
s = ReplaceRegExp(" email is xyz@example.com", `(\w+)@(\w+)\.(\w+)`, "${3}.${2}@zzz")
// email is com.example@zzz
```
