The RegExpr package includes a number of regular expressions implementations
Regexpr by Sorokin
This is the most complete implementation, available in packages/regexpr/src/regexpr.pas
Read the wikipedia page about regular expressions to get introduced to the subject: POSIX Basic Regular Expressions
This package implements a subset of Perl's regular expressions and the syntax provided by the package is documented here: https://regex.sorokin.engineer/regex
Change case on replaces
You can change case of found fragments, use modifiers in replace-with field (case change works after position of modifier):
- \l - First char to lower
- \L - All chars to lower
- \u - First char to upper
- \U - All chars to upper
E.g. if found a word, use replace-with field "\L$0" to change word to lowercase (here $0 is group 0, found text).
In addition \n will be replaced with the LineEnd character (or character sequence).
Simple usage example
Using Sorokin RegExpr to check if an expression is present in a string is very easy, just create an instance of TRegExpr, then place your regular expression in the property TRegExpr.Expression and use the method Exec to verify if there are any matches for this regular expression. Exec will return true if the expression matches the string passed to it.
var RegexObj: TRegExpr; begin RegexObj := TRegExpr.Create; RegexObj.Expression := '.*login.*'; if RegexObj.Exec('Please try to login here') then WriteLn('The login was found!'); RegexObj.Free; end;
program Project1; uses RegExpr; var re: TRegExpr; begin re := TRegExpr.Create('hello (.*?)!'); if re.Exec('hello world! hello pascal!') then begin WriteLn(re.Match); while re.ExecNext do begin WriteLn(re.Match); end; end; re.Free; end.
Regexpr by Joost
Regexpr by Joost (units oldregexpr.pp and regex.pp) is a very basic regex (Regular Expression) unit, it handles most regular expressions as GNU regexpr. The use of regex is to search patterns inside a string.
The unit contains 4 functions for now:
- GenerateRegExprEngine – This function compiles the regex pattern.
- RegExprPos – Finds the pattern inside a given string.
- DestroyRegExprEngine – Free the compilation of the pattern
- RegExprEscapeStr – Escape reserve syntax of regular expression language so it will be understood as string instead of regex syntax.
There is also one test:
- The testreg1 test program demonstrates the supported regular expressions.
Regexpr by Florian
This is the oldest implementation. It is present in packages/regexpr/src/old and is not currently compiled by the makefiles, so it is not available precompiled by default in released FPC/Lazarus versions.
Go to back Packages List