Components | All | New | MacOS | Windows | Linux | iOS | ||||
Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old |
RegEx.Compile
Compiles a pattern.
Component | Version | macOS | Windows | Linux | Server | iOS SDK |
RegEx | 4.4 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Parameters
Parameter | Description | Example |
---|---|---|
Pattern | The pattern to use. | "H(.*)" |
CompilerOptions | A number for the options to use. e.g. 1 for case insensitive or 512 for ungreedy. Add 2 for multiline. Can be given as text or number. |
"multiline¶ungreedy" |
Result
Returns reference number or error.
Description
Compiles a pattern.Returns the regular expression reference which you can than pass to other functions.
Remember to use RegEx.Release to free memory later.
You compile a pattern once. If you use RegEx.Execute several times on it, it may be worth using RegEx.Study for better performance.
Please use \r instead of \n for the pattern as FileMaker uses Mac line endings.
RegEx reference numbers are starting at 13000 and counting up for each new expression.
Compile option | Number | Description |
Caseless | 1 | Do caseless matching |
Multiline | 2 | ^ and $ match newlines within data |
Dot All | 4 | . matches anything including NL |
Extended | 8 | Ignore white space and # comments |
Anchored | 16 | Force pattern anchoring |
Dollar End Only | 32 | $ not to match newline at end |
Ungreedy | 512 | Invert greediness of quantifiers |
No Auto Capture | 4096 | Disable numbered capturing parentheses (named ones available) |
Auto Callout | 16384 | Compile automatic callouts |
FirstLine | 262144 | Force matching to be before newline |
Dup Names | 524288 | Allow duplicate names for subpatterns |
Newline CR | 1048576 | Set CR as the newline sequence |
Newline LF | 2097152 | Set LF as the newline sequence |
Newline CRLF | 3145728 | Set CRLF as the newline sequence |
Newline Any | 4194304 | Recognize any Unicode newline sequence |
Newline Any CRLF | 5242880 | Recognize CR, LF, and CRLF as newline sequences |
BSR Any CRLF | 8388608 | \R matches only CR, LF, or CRLF |
BSR Unicode | 16777216 | \R matches all Unicode line endings |
JavaScript Compatible | 33554432 | JavaScript compatibility |
No start optimize | 67108864 | Disable match-time start optimizations |
Please pass sum of the numbers to select options.
Examples
Compile with double escapement:
Set Variable [ $regex ; Value: MBS("RegEx.Compile"; "\\\""; 512+1) ]
Find matches in multiline text:
Let ([
pattern = "^GR.";
text = "GR1¶GR2 ¶GR3 ";
CompileOptions = 2 /* multiline */ + 1 /* caseless */ + 4194304 /* newline any */;
ExecuteOptions = 4194304 /* newline any */;
regex = MBS("RegEx.Compile"; pattern; CompileOptions );
result = MBS( "RegEx.FindMatches"; regex; text; ExecuteOptions ; 0 );
r = MBS("RegEx.Release"; regex)
]; result )
Loop and find all matches for pattern:
Set Variable [ $pattern ; Value: "(USt\-?ID:?|USt\-?IdNR\.?:?|Umsatzsteuer\-?ID:?|VAT\-?ID:?)[\s]?(DE)[\s]?([0-9]{9})" ]
Set Variable [ $ExecuteOptions ; Value: 0 ]
Set Variable [ $CompileOptions ; Value: "caseless" ]
Set Variable [ $regex ; Value: MBS("RegEx.Compile"; $Pattern; $CompileOptions) ]
Set Variable [ $offset ; Value: 0 ]
Loop
Set Variable [ $r ; Value: MBS("RegEx.Execute"; $regex; RegEx::Text; $ExecuteOptions; $offset) ]
Exit Loop If [ $r < 4 ]
Set Variable [ $s1 ; Value: MBS("RegEx.Substring"; $RegEx; 1) ]
Set Variable [ $s2 ; Value: MBS("RegEx.Substring"; $RegEx; 2) ]
Set Variable [ $s3 ; Value: MBS("RegEx.Substring"; $RegEx; 3) ]
Show Custom Dialog [ $s1 & ¶ & $s2 & ¶ & $s3 ]
Exit Loop If [ MBS("IsError") ]
Set Variable [ $offset ; $offset + Value: GetAsNumber(GetValue(MBS("RegEx.Results"; $regex); 2)) ]
End Loop
Set Variable [ $r ; Value: MBS("RegEx.Release"; $RegEx) ]
See also
- RegEx.CaptureCount
- RegEx.Execute
- RegEx.MinimumLength
- RegEx.NameCount
- RegEx.NamedSubstring
- RegEx.Options
- RegEx.Release
- RegEx.Results
- RegEx.StringNumber
- RegEx.Substring
Example Databases
Blog Entries
This function checks for a license.
Created 26th October 2014, last changed 26th April 2023