reFind.exe, the Search and Replace Utility Using Perl RegEx Expressions

From RAD Studio
Jump to: navigation, search

Go Up to Command-Line Utilities Index

reFind is a command-line utility for search and replacement of Perl RegEx text patterns in a text file.

For instructions on using reFind to migrate:

Command-Line Help

RegEx (PCRE) search and replace utility, v 2.5
Copyright (c) 2013 Embarcadero Technologies, Inc.

Usage: reFind <filemasks> [/S] [/Y] [/B:0|1|2] [/Q] [/I] [/W] [/L]
              [/P:<searchpattern>] [/R:<replacepattern>] [/X:<rule filename>

  <filemasks> Specifies the file masks or file names to process.

  /?          Displays help.
  /S          Search this directory with all subdirectories.
  /Y          Modify also read-only files.
  /B:0        if .bak file exists no replace will be performed (default).
  /B:1        if .bak file exists, it is overwritten.
  /B:2        No .bak file is created.
  /Q          Quiet operation. No output to console.

  /C          Leave the old target code as a comment instead of deleting it.
  /I          Ignore case.
  /W          Whole words.
  /L          Multi line search.
  /P          Perl RegEx search pattern.
  /R          Perl RegEx replacement pattern.
  /X          Specifies rule file with multiple Perl RegEx search and replace patterns or rules.

The rule formats:
  #unuse <unit>                       - remove unit from the PAS uses clause
  #remove <property>                  - remove property from PAS and DFM
  #migrate [<class> :] <old> -> <new> [, <unit>]  - replace old with new identifier,
                                        optionally add unit to uses clause,
                                        optionally restrict migration to the specified class
              Each file line has format:    
                <searchpattern> -> <replacepattern> 

Patterns Format

reFind uses Perl compatible regular expressions (PCRE) for search and replacement patterns.

For more details, please visit:

Rules Format

The rule file consists of several lines, each of them representing a single rule. The rule file may be specified using the /X:<file name> command line parameter.

Seach and Replace Rule

 <search pattern> -> <replace pattern>

<Search pattern> is a PCRE search pattern. <Replace pattern> is a PCRE replace pattern.

Remove Unit Rule

 #unuse <unit name>

Removes the specified <unit name> from the interface and the implementation section of the "uses" clauses of the PAS files.

Remove Property Rule

 #remove <property name>

Removes the specified <property name> from PAS and DFM files. From a PAS file, it will remove any construction like <prop> := <value>;.

Migrate Rule

 #migrate [<class> :] <old name> -> <new name> [, <unit>]

Replaces all <old name> identifiers with a <new name> in PAS and DFM files. If the <class> is specified, then the rule will be applied only to the objects of the specified class:

  • DFM - only to base objects, not to inherited ones;
  • PAS - only to <obj>.<old name> constructions, not to the "with" clauses content.

If the <unit> is specified, then it will be added to the "uses" clause of the PAS unit part, where the <old name> is found. The <unit> may be a comma-separated list of the units.


  • Replace all "TQuery" with "TFDQuery" in pas files:
 refind *.pas /I /W /P:TQuery /R:TFDQuery
  • Replace all "TxxxQuery" with "TFDQuery" in pas and dfm files:
 refind *.pas *.dfm /I /W "/P:T[A-Za-z]+Query" /R:TFDQuery
  • Replace all "TxxxQuery" with "TQueryxxx" in pas and dfm files:
 refind *.pas *.dfm /I /W "/P:T([A-Za-z]+)Query" /R:TQuery\1
  • Remove all "Origin = xxxx" from DFM files:
 refind *.dfm /L "/P:\n +Origin =.+$" "/R:"
  • Migrate application from BDE to FireDAC:
 reFind *.pas *.dfm /X:FireDAC_Migrate_BDE.txt

See Also