Home

Awesome

Synopsis

:- use_module(library(regex)).
?- '99 Bottles of Beer' =~ '[0-9]+ bottles'/i.
true.

Description

Regular expression support for Prolog.

When Prologers want to match a string against a pattern, they typically write a DCG. DCGs are powerful and flexible. For medium to large patterns, they are also easier to read and maintain. However, for small and local patterns the overhead of writing and naming auxiliary predicates can be too much. In those circumstances, one might prefer a regular expression. This pack makes it possible.

The =~ operator matches a string (on the left side) against a regular expression (on the right side). Either side can be an atom or a list of codes. The \~ operator succeeds if the string does not match the pattern.

Syntax Reference

This section lists the regular expression syntax accepted by library(regex). Syntax not listed here is not yet supported. Patches welcome.

Single characters

Composites

Repetitions

Grouping

Flags

Empty strings

Character class elements

Perl character classes

Acknowledgements

Rob Cameron for his lecture notes on which the original implementation was based.

Installation

Using SWI-Prolog 6.3 or later:

?- pack_install(regex).

This module uses semantic versioning.

Source code available and pull requests accepted at http://github.com/mndrix/regex