[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