Did you know ... | Search Documentation: |
Packs (add-ons) for SWI-Prolog |
Title: | Regular expressions |
---|---|
Rating: | Not rated. Create the first rating! |
Latest version: | 0.3.3 |
SHA1 sum: | 7f6049bbbc6e2b22f2f3d69eea515a874335bec1 |
Author: | Michael Hendricks <michael@ndrix.org> |
Maintainer: | Michael Hendricks <michael@ndrix.org> |
Packager: | Michael Hendricks <michael@ndrix.org> |
Home page: | https://github.com/mndrix/regex |
Download URL: | https://github.com/mndrix/regex/archive/v0.3.3.zip |
No reviews. Create the first review!.
:- use_module(library(regex)). ?- '99 Bottles of Beer' =~ '[0-9]+ bottles'/i. true.
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.
This section lists the regular expression syntax accepted by library(regex)
.
Syntax not listed here is not yet supported. Patches welcome.
[xyz]
- character class\d
- Perl character class\D
- negated Perl character classxy
- x
followed by y
x|y
- x
or y
(prefer x) - zero or more
x`, prefer more - one or more
x`, prefer more - zero or one
x`, prefer one -
n or
n+1` or ... or m
x
, prefer more -
n` or more x
, prefer more - exactly
n` x
(re)
- numbered capturing groupi
- case-insensitive (default false)s
- let `. match
\n` (default false)^
- at start of text$
- at end of textx
- single characterA-Z
- character range (inclusive)\d
- digits (same as [0-9]
)\D
- not digits (same as `[^0-9]`)\s
- whitespace (same as `[\t\n\f\r ]`)\S
- not whitespace (same as `[^\t\n\f\r ]`)\w
- word characters (same as `[0-9A-Za-z_]`)\W
- not word characters (same as `[^0-9A-Za-z_]`)Rob Cameron for his lecture notes on which the original implementation was based.
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
Pack contains 14 files holding a total of 25.1K bytes.