Skip to main content

34.5 POSIX Regular Expression Searching

The usual regular expression functions do backtracking when necessary to handle the ‘\|’ and repetition constructs, but they continue this only until they find some match. Then they succeed and report the first match found.

This section describes alternative search functions which perform the full backtracking specified by the POSIX standard for regular expression matching. They continue backtracking until they have tried all possibilities and found all matches, so they can report the longest match, as required by POSIX. This is much slower, so use these functions only when you really need the longest match.

The POSIX search and match functions do not properly support the non-greedy repetition operators (see non-greedy). This is because POSIX backtracking conflicts with the semantics of non-greedy repetition.

command posix-search-forward regexp \&optional limit noerror count

This is like re-search-forward except that it performs the full backtracking specified by the POSIX standard for regular expression matching.

command posix-search-backward regexp \&optional limit noerror count

This is like re-search-backward except that it performs the full backtracking specified by the POSIX standard for regular expression matching.

function posix-looking-at regexp

This is like looking-at except that it performs the full backtracking specified by the POSIX standard for regular expression matching.

function posix-string-match regexp string \&optional start

This is like string-match except that it performs the full backtracking specified by the POSIX standard for regular expression matching.