Panicz Maciej Godek <[email protected]> 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