NextPrevUpTopContentsIndex

3.21.2 Regular expression searching

A regular expression ( regexp ) allows the specification of the search string to include wild characters, repeated characters, ranges of characters, and alternatives. Strings which follow a specific pattern can be located, which makes regular expression searches very powerful.

The regular expression syntax used is similar to that of Emacs. In addition to ordinary characters, a regular expression can contain the following special characters to produce the search pattern:

.

Matches any single character except a newline. For example, c.r matches any three character string starting with c and ending with r .

*

Matches the previous regexp any number of times (including 0 times). For example, ca*r matches strings beginning with c and ending with r , with any number of a 's in-between.

An empty regexp followed by * matches an empty part of the input. By extension, ^* will match exactly what ^ matches.

+

Matches the previous regexp any number of times, but at least once. For example, ca+r matches strings beginning with c and ending with r , with at least one a in-between. An empty regexp followed by + matches an empty part of the input.

?

Matches the previous regexp either 0 or 1 times. For example, ca?r matches either the string cr or car , and nothing else. An empty regexp followed by ? matches an empty part of the input.

^

Matches the next regexp as long as it is at the beginning of a line. For example, ^foo matches the string foo as long as it is at the beginning of a line.

$

Matches the previous regexp as long as it is at the end of a line. For example, foo$ matches the string foo as long as it is at the end of a line.

[ ]

Contains a character set to be used for matching, where the other special characters mentioned do not apply. The empty string is automatically part of the character set. For example, [a.b] matches either a or . or b or the empty string. The regexp c[ad]*r matches strings beginning with c and ending with r , with any number of a 's and d 's in-between.

The characters - and ^ have special meanings inside character sets. - defines a range and ^ defines a complement character set. For example, [a-d] matches any character in the range a to d inclusive. [^ab] matches any character except a or b .

\

Quotes the special characters. For example, \* matches the character * (that is, * has lost its special meaning).

\|

Specifies an alternative. For example, ab\|cd matches either ab or cd .

\( , \)

Provides a grouping construct. For example, ab\(cd\|ef\) matches either abcd or abef .

Regexp Forward Search

Editor Command

Arguments: string
Key sequence: Alt+Ctrl+S string

editor:regexp-forward-search-command p &optional string the-point limit

Performs a forward search for string using regular expressions. The search pattern must be terminated with a carriage return before any searching is done. If an empty string is provided, the last regexp search is repeated.

The argument the-point specifies the position from which the search is to start. The default is the current point. limit specifies a limiting point in the buffer for the search. The default is the end of the buffer.

Regexp Reverse Search

Editor Command

Arguments: string
Key sequence: Alt+Ctrl+R string

editor:regexp-reverse-search-command p &optional string the-point limit

Performs a backward search for string using regular expressions. The search pattern must be terminated with a carriage return before any searching is done. If an empty string is provided, the last regexp search is repeated.

The argument the-point specifies the position from which the search is to start. The default is one position before the current point. limit specifies a limiting point in the buffer for the search. The default is the current point.

Count Occurrences

Editor Command

Arguments: None
Default binding: None

editor:count-occurrences-command p &optional regexp

Counts the number of regular expression matches for the string regexp between the current point and the end of the buffer.

Count Matches is a synonym for Count Occurrences .


LispWorks Editor User Guide (Windows version) - 14 Mar 2008

NextPrevUpTopContentsIndex