Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lDrGK-0004C3-6s for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Feb 2021 16:07:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lDrGJ-0007Yh-5b for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Feb 2021 16:07:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lDrGI-0007YS-A7 for pgsql-hackers@lists.postgresql.org; Sun, 21 Feb 2021 16:07:10 +0000 Received: from [66.111.4.29] (helo=out5-smtp.messagingengine.com) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lDrGF-0000RK-82 for pgsql-hackers@lists.postgresql.org; Sun, 21 Feb 2021 16:07:09 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 5F8175C0092; Sun, 21 Feb 2021 11:06:56 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 21 Feb 2021 11:06:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=y6ADFtqJwABq7DqCIQ8dlz5TjWeQACJBEkaSCKwNNWg=; b=gl3iD1s6 x3foeAKhzMkOpBydL9pFTHqO7N6fJQfhgnBy91bplKj/i2k0sWkL9dw/Ok1JWg4w QY3bEOORZEQO7Ar/Y66aEFKQAh3cSn9yvh5G3hyRppo6woB6zK/noQBT/Qgak3mc pNKs/XT+NwCTqQjYw57M1EgxkNBlzIcbd1XifmfLLyB5jT9Tgk6GMUwVqoMXxxFV xjztIRXCoiY4XuRfjuN4u8MAQd8Vq3EX8VTsb0IH93B5pGOSfNk1XUC4V+PgJ/eG /WrjkZsM8xksqnVzsw0ylZhW7F60YRhynMXOwwa8L+d3MFuKR8yS9Q4sdzjqCZSc 0dK7vmPXFW1dfA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrkedugdekvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpeffhffvuffkgggtugfgjggfsehtkeertddtredunecuhfhrohhmpeetlhhvrghr ohcujfgvrhhrvghrrgcuoegrlhhvhhgvrhhrvgesrghlvhhhrdhnohdqihhprdhorhhgqe enucggtffrrghtthgvrhhnpeeufffhjeeiueeuffegvddukeegledtveeivdeiueefieei vefgteehueefteehvdenucfkphepudeltddrleehrdduledrudejjeenucevlhhushhtvg hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegrlhhvhhgvrhhrvgesrghl vhhhrdhnohdqihhprdhorhhg X-ME-Proxy: Received: from perhan.alvh.no-ip.org (unknown [190.95.19.177]) by mail.messagingengine.com (Postfix) with ESMTPA id 182E81080063; Sun, 21 Feb 2021 11:06:55 -0500 (EST) Received: by perhan.alvh.no-ip.org (Postfix, from userid 1000) id 00E9B2A0022; Sun, 21 Feb 2021 13:06:51 -0300 (-03) Date: Sun, 21 Feb 2021 13:06:51 -0300 From: Alvaro Herrera To: Joel Jacobson Cc: Tom Lane , pgsql-hackers@lists.postgresql.org Subject: Re: Bizarre behavior of \w in a regular expression bracket construct Message-ID: <20210221160651.GA3721@alvherre.pgsql> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Host-Lookup-Failed: Reverse DNS lookup failed for 66.111.4.29 (deferred) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2021-Feb-21, Joel Jacobson wrote: > regex | engine | deduced_ranges > ------------+--------+------------------------------- > ^([a-z])$ | pg | [a-z] > ^([a-z])$ | pl | [a-z] > ^([a-z])$ | v8 | [a-z] > ^([\d-a])$ | pg | > ^([\d-a])$ | pl | [-0-9a] > ^([\d-a])$ | v8 | [-0-9a] > ^([\w-;])$ | pg | > ^([\w-;])$ | pl | [-0-9;A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w-;])$ | v8 | [-0-9;A-Z_a-z] > ^([\w-_])$ | pg | [0-9A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w-_])$ | pl | [-0-9A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w-_])$ | v8 | [-0-9A-Z_a-z] > ^([\w])$ | pg | [0-9A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w])$ | pl | [0-9A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w])$ | v8 | [0-9A-Z_a-z] > ^([\W])$ | pg | > ^([\W])$ | pl | [\x01-/:-@[-^`{-©«-´¶-¹»-¿×÷] > ^([\W])$ | v8 | [\x01-/:-@[-^`{-ÿ] > ^([\w-a])$ | pg | [0-9A-Z_-zªµºÀ-ÖØ-öø-ÿ] > ^([\w-a])$ | pl | [-0-9A-Z_a-zªµºÀ-ÖØ-öø-ÿ] > ^([\w-a])$ | v8 | [-0-9A-Z_a-z] It looks like the interpretation of these other engines is that [\d-a] is the set of \d, the literal character "-", and the literal character "a". In other words, the - preceded by \d or \w (or any other character class, I guess?) loses its special meaning of identifying a character range. This one I didn't understand: > ^([\W])$ | pg | -- Álvaro Herrera Valdivia, Chile "Porque francamente, si para saber manejarse a uno mismo hubiera que rendir examen... ¿Quién es el machito que tendría carnet?" (Mafalda)