Re: Regexp named capture groups - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Regexp named capture groups
Date
Msg-id CAFj8pRCfTy0KEYceSAB=ctQJdngRVOCcvMs1ggbjAbS7UDBkrg@mail.gmail.com
Whole thread Raw
In response to Regexp named capture groups  (Joel Jacobson <joel@trustly.com>)
Responses Re: Regexp named capture groups
List pgsql-hackers


2018-02-03 11:19 GMT+01:00 Joel Jacobson <joel@trustly.com>:
Hi hackers,

Is anyone working on this feature[1] also for PostgreSQL's regex engine?

I'm thinking it could work something like this:

joel=# \df regexp_match
                              List of functions
   Schema   |     Name     | Result data type | Argument data types |  Type
------------+--------------+------------------+---------------------+--------
 pg_catalog | regexp_match | jsonb            | text, text          | normal
 pg_catalog | regexp_match | jsonb            | text, text, text    | normal
(2 rows)

joel=#* SELECT regexp_match_named(
joel(#*    '2018-12-31',
joel(#*    '(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})'
joel(#* );
              regexp_match_named
----------------------------------------------
 {"day": "31", "year": "2018", "month": "12"}
(1 row)

I think this feature would be awesome, for the reasons mentioned in [1], quote:

"Referring to capture groups via numbers has several disadvantages:
1. Finding the number of a capture group is a hassle: you have to
count parentheses.
2. You need to see the regular expression if you want to understand
what the groups are for.
3. If you change the order of the capture groups, you also have to
change the matching code."

[1] http://2ality.com/2017/05/regexp-named-capture-groups.html

looks like nice feature

Pavel
 


Best regards,

Joel Jacobson


pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: JIT compiling with LLVM v9.0
Next
From: Michael Paquier
Date:
Subject: Re: Regexp named capture groups