Difference between revisions of "IDE regular expressions"

From Lazarus wiki
Jump to navigationJump to search
Line 58: Line 58:
 
   \s matches a space character ' ',#9,#10,#12,#13
 
   \s matches a space character ' ',#9,#10,#12,#13
 
   \S matches a non space character
 
   \S matches a non space character
   \s matches a word character 'a'..'z','A'..'Z','0'..'9','_'
+
   \w matches a word character 'a'..'z','A'..'Z','0'..'9','_'
   \S matches a non word character
+
   \W matches a non word character
 
</pre>
 
</pre>
  

Revision as of 14:36, 9 August 2006

English (en) español (es) suomi (fi) polski (pl)

Normal regular expression

Metacharacters:

   \   Quote the next metacharacter
   ^   Match the beginning of the line
   .   Match any character (except newline). Example: 'a.c' matches 'abc', 'aBC', 'axc', 'a3c', 'a$c', etc.
   $   Match the end of the line (or before newline at the end)
   |   Alternation
   ()  Grouping. For example: (abc)+ matches 'abc' or 'abcabc' or 'abcabcabc' etc.
   []  Character class

Quantifiers:

   *      Match 0 or more times
   +      Match 1 or more times
   ?      Match 1 or 0 times
   {n}    Match exactly n times
   {n,}   Match at least n times
   {n,m}  Match at least n but not more than m times

Curly brackets in any other context is treated as a regular character. The ``* is equivalent to {0,}, the ``+ to {1,} and the ``? to {0,1}.

By default, a quantifier is greedy, that means, it will match as many times as possible. To match the minimum number of times possible, append a ``?.

   *?     Match 0 or more times
   +?     Match 1 or more times
   ??     Match 0 or 1 time
   {n}?   Match exactly n times
   {n,}?  Match at least n times
   {n,m}? Match at least n but not more than m times

Simple Syntax

Some IDE dialogs provide a checkbox to enable 'simple syntax'. These regular expressions are shorter for common file name filters.

Technically it does this:

  The following characters are replaced with
  . -> \.
  * -> .*
  ? -> .
  , -> |
  ; -> |
  
  Finally enclose by ^( )$

Quoted symbols

The backslash '\' can be used to treat special characters like '.' as normal character or to get some special ranges.

  \. matches a point '.'
  \d matches a number character '0'..'9'
  \D matches a non number character
  \s matches a space character ' ',#9,#10,#12,#13
  \S matches a non space character
  \w matches a word character 'a'..'z','A'..'Z','0'..'9','_'
  \W matches a non word character

Search and Replace with regular expressions

The find dialogs support regular expressions for finding and replacing. Each found pattern grouped in round brackets can be used by a $1, ..., $9 variable

For example:

  • Find expression: a(.*)c
  • Replace expression: A$1C
  • Text: 'abc aLazc'

The $1 will be replaced with the found text, that matches the first bracket.

  • Result: 'AbC ALazC'