regexp bug (literal dot)

Anders Ramsell anders@REDACTED
Tue Mar 26 00:48:28 CET 2002

Willem Broekema wrote:

> Hi all,
>  From what I understand, in regexps, "." means 'any char' and "\." means 
> a literal dot.
> So, the following is a bug:
> 170> regexp:match("a", ".").
> {match,1,1}
> 171> regexp:match("a", "\.").
> {match,1,1}  % shouldn't match!

I don't think your problem is a bug in regexp. The problem is a mistake 
in using backslash-quoting in string literals. The string literal "\." 
is actually the same as the string literal ".". To get a string literal 
representing a string with a backslash and a dot you need to write 
"\\.". This is illustrated by the following tests:

 > string:len(".").
 > string:len("\.").
 > string:len("\\.").


As you can see the first two string literals represent strings of length 
one and the third represents a string of length two.


More information about the erlang-questions mailing list