[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Negate a regexp

From: Drew Adams
Subject: RE: Negate a regexp
Date: Mon, 19 Apr 2010 08:51:23 -0700

> How to negate a regexp? For example this one: \(?:\sw\|\s_\|\s\\).

You cannot express a complement using (real) regexps. Regular expressions are
just not that expressive (powerful).

However, Emacs Lisp is that powerful; its use of regexps is not limited to real
regular expressions; and you can bathe your use of regexps in a more powerful

In Emacs Lisp, you can in some cases use complementary syntax: \W as complement
of \w, \S_ as complement of \s_, etc. And you can use ^ at the beginning of a
[...] character set to complement that set (what the manual calls a
"complemented character alternative"). See node `Syntax of Regexps' in the Elisp

Another thing you can do is to use a regexp to determine a set of matches -
those elements you do not want, and then, assuming you know the overall domain
explicitly (extensively), subtract those matches to get the complement (those
elements of the domain that do not match).

reply via email to

[Prev in Thread] Current Thread [Next in Thread]