bug-guile
[Top][All Lists]
Advanced

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

bug#12665: regexp fault for closing square bracket within character clas


From: Mark H Weaver
Subject: bug#12665: regexp fault for closing square bracket within character class
Date: Thu, 18 Oct 2012 00:54:01 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Panicz Maciej Godek <address@hidden> writes:
> guile 2.0.5-deb+1-1
> (string-match "[\\[]" "[")
> ===> #("[" (0 . 1))
> (string-match "[\\]]" "]")
> ===> #f

As documented in "Syntax of Regular Expressions" of the Emacs manual
(to which section 6.15 of the Guile manual refers):

     To include a `]' in a character set, you must make it the first
     character.  For example, `[]a]' matches `]' or `a'.  To include a
     `-', write `-' as the first or last character of the set, or put
     it after a range.  Thus, `[]-]' matches both `]' and `-'.

For example:

  (string-match "[]\\]" "]")   ==>  #("]" (0 . 1))

Note that backslash is also a member of this character class, and of the
character class in your first example:

  (string-match "[]\\]" "\\")  ==>  #("\\" (0 . 1))
  (string-match "[\\[]" "\\")  ==>  #("\\" (0 . 1))

You might have been thinking that the backslash would escape the square
brackets in your class, but that's not how it works within character
classes.  '[' can be included anywhere in a character class without
being escaped, and ']' and '-' are handled as described above.

    Regards,
      Mark





reply via email to

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