---
url: >-
  /statelake/scripting-reference/functions-and-procedures/string-functions/regular-expressions-regex/regexextract.md
---

# RegExExtract

The function **RegExExtract** looks for a match to the pattern specified by **aExpression** in the string **aInput**, and returns the matched characters in the variable **aPiece** - depending on the value specified by **aExpression**.

Where the pattern matches, a boolean **True** value will be returned indicating that a match was found. **False** will be returned where no match was found.

**Declaration**: Function RegExExtract(const aExpression, aInput: String; var aPiece : String): boolean;

Several examples follow.

```pascal
procedure ScriptEvent(var Value:Variant);
var
  Str1, Str2, MyOut : string;
begin
  Str1 := 'n';
  Str2 := 'banana';

 //Returns TRUE and MyOut variable is set to "n" to show what has been matched
  RegExExtract(Str1, Str2, MyOut);
  LogInfo(MyOut);

 //Returns TRUE and MyOut variable is set to "a" to show what has been matched
  RegExExtract('a','banana', MyOut);
  LogInfo(MyOut);
 If RegExExtract('a','banana',MyOut) then
    LogInfo('Yes!')
 else
    LogInfo('No . . . ');

 //Returns TRUE and sets MyOut variable to "6" (i.e. the first digit)
  RegExExtract('\d','Route 66',MyOut)
  LogInfo(MyOut);

 //Pattern "\d+" matches 1 or more consecutive digits
 //Function returns TRUE and sets MyOut variable to "66"
  RegExExtract('\d+','Route 66',MyOut)
  LogInfo(MyOut);

 //Returns TRUE and sets MyOut variable to "555"
  RegExExtract('\d{3}','+1-555-123-4567',MyOut)
  LogInfo(MyOut);

end;
```
