Re: Expected behaviour of \d in regexp with exponent numbers ?
От | Arnaud Lesauvage |
---|---|
Тема | Re: Expected behaviour of \d in regexp with exponent numbers ? |
Дата | |
Msg-id | 54057951.4070601@codata.eu обсуждение исходный текст |
Ответ на | Re: Expected behaviour of \d in regexp with exponent numbers ? (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-general |
Le 1/09/2014 18:11, Tom Lane a écrit : > Arnaud Lesauvage <arnaud.listes@codata.eu> writes: >> Le 1/09/2014 17:39, Tom Lane a écrit : >>> Not necessarily. \d will match any character that iswdigit() returns true >>> for. It looks like your new server is using a locale that considers "²" >>> to be a digit. > >> Since both PostgreSQL servers run on the same computer, can I assume >> that this is a collation problem ? > > Ah: after consulting the commit history I realized that the regex > operators only base \d on iswdigit() in 9.2 and later. Before that > it was hardwired as [0-9]. So there might not be any difference > in the locale environment after all. > > I wonder whether this was a bad idea. I think it's unsurprising for the > definition of "alphanumeric" to depend on locale, but I bet most people > are not expecting \d to vary that way. I guess the change in the way \d is behaving is OK as long as it is documented in a changelog. I saw something about syncing the regexp code with TCL somewhere, but I think there was a mention that this should not change the regexp behaviour and that it was only to keep the code base in sync. The problem in my case is just that I expected any character in the "digit" class to be a valid integer, which is wrong since the doc states that numbers should be written with "decimal digits", not "locale digits". So I guess I should just rewrite this regexp as [0-9]+ instead. Thanks for the feedback ! Regards -- Arnaud
В списке pgsql-general по дате отправления: