# Regular expressions

Functions for working with regular expressions are described here.

* [FindFirstRegExp( str src, str re ) arr.str](/stdlib/regexp.md#findfirstregexp-str-src-str-re-arr-str)
* [FindRegExp( str src, str re ) arr.arr.str](/stdlib/regexp.md#findregexp-str-src-str-re-arr-arr-str)
* [Match( str s, str re ) bool](/stdlib/regexp.md#match-str-s-str-re-bool)
* [RegExp( str src, str re ) str](/stdlib/regexp.md#regexp-str-src-str-re-str)
* [ReplaceRegExp( str src, str re, str repl ) str](/stdlib/regexp.md#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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gentee.org/stdlib/regexp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
