manpagez: man pages & more
info bigloo
Home | html | info | man
[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2.11 Cloisters

The location between the ? and the : of a non-capturing cluster is called a cloister.(8) You can put modifiers there that will cause the enclustered subpattern to be treated specially. The modifier i causes the subpattern to match case-insensitively:

(pregexp-match "(?i:hearth)" "HeartH") ⇒ ("HeartH")

The modifier x causes the subpattern to match space-insensitively, ie, spaces and comments within the subpattern are ignored. Comments are introduced as usual with a semicolon (;) and extend till the end of the line. If you need to include a literal space or semicolon in a space-insensitized subpattern, escape it with a backslash.

(pregexp-match "(?x: a   lot)" "alot")
 ⇒ ("alot")

(pregexp-match "(?x: a  \\  lot)" "a lot")
 ⇒ ("a lot")

(pregexp-match "(?x:
   a \\ man  \\; \\   ; ignore
   a \\ plan \\; \\   ; me
   a \\ canal         ; completely
   )" 
 "a man; a plan; a canal")
 ⇒ ("a man; a plan; a canal")

The global variable *pregexp-comment-char* contains the comment character (#\;). For Perl-like comments,

(set! *pregexp-comment-char* #\#)

You can put more than one modifier in the cloister.

(pregexp-match "(?ix:
   a \\ man  \\; \\   ; ignore
   a \\ plan \\; \\   ; me
   a \\ canal         ; completely
   )" 
 "A Man; a Plan; a Canal")
 ⇒ ("A Man; a Plan; a Canal")

A minus sign before a modifier inverts its meaning. Thus, you can use -i and -x in a subcluster to overturn the insensitivities caused by an enclosing cluster.

(pregexp-match "(?i:the (?-i:TeX)book)"
  "The TeXbook")
 ⇒ ("The TeXbook")

This regexp will allow any casing for the and book but insists that TeX not be differently cased.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on October 23, 2011 using texi2html 5.0.