Next: irregex sre utility, Previous: irregex sre char-sets, Up: irregex sre [Index]
It can be useful to assert something about the area around a pattern, without explicitly making it part of the pattern. The most common cases are specifically anchoring some pattern to the beginning or end of a word or line or even the whole string. For example, to match on the end of a word:
(irregex-match '(: "foo" eow) "foo") ⇒ #<match> (irregex-match '(: "foo" eow) "foo!") ⇒ #<match> (irregex-match '(: "foo" eow) "foof") ⇒ #f
The bow
, bol
, eol
, bos
and eos
work
similarly. nwb
asserts that you are not in a word–boundary; if
replaced with eow
in the above examples it would reverse all the
results.
There is no wb
, since we probably know from context whether it
would be the beginning or end of a word, but if we need it we can always
use (or bow eow)
.
Somewhat more generally, Perl introduced positive and negative
look-ahead
and look-behind
patterns. Perl’s
look-behind
patterns are limited to a fixed length, however the
(vicare irregex)
versions have no such limit.
(irregex-match '(: "regular" (look-ahead " expression")) "regular expression") ⇒ #<match>
The most general case, of course, would be an and
pattern to
complement the or
pattern; all the patterns must match or the
whole pattern fails. This may be provided in a future release, although
it (and look-ahead
and look-behind
assertions) are
unlikely to be compiled efficiently.