emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#12665: closed (regexp fault for closing square bra


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#12665: closed (regexp fault for closing square bracket within character class)
Date: Thu, 18 Oct 2012 04:56:02 +0000

Your message dated Thu, 18 Oct 2012 00:54:01 -0400
with message-id <address@hidden>
and subject line Re: bug#12665: regexp fault for closing square bracket within 
character class
has caused the debbugs.gnu.org bug report #12665,
regarding regexp fault for closing square bracket within character class
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
12665: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12665
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: regexp fault for closing square bracket within character class Date: Wed, 17 Oct 2012 21:33:58 +0200
guile 2.0.5-deb+1-1
(string-match "[\\[]" "[")
===> #("[" (0 . 1))
(string-match "[\\]]" "]")
===> #f



--- End Message ---
--- Begin Message --- Subject: Re: 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


--- End Message ---

reply via email to

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