From: | Chapman Flack <chap(at)anastigmatix(dot)net> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Joel Jacobson <joel(at)compiler(dot)org> |
Cc: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Some regular-expression performance hacking |
Date: | 2021-02-20 23:31:39 |
Message-ID: | 60319BDB.2040302@anastigmatix.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 02/19/21 10:26, Tom Lane wrote:
>> "foo\nbar".match(/([\w\W]+)/)[1];
>> "foo
>> bar"
>
> Oooh, that's very interesting. I guess the advantage of that over using
> the 's' flag is that you can have different behaviors at different places
> in the same regex.
Perl, Python, and Java (at least) all have a common syntax for changing
flags locally in a non-capturing group, so you could just match (?s:.)
-- which I guess isn't any shorter than [\w\W] but makes the intent more
clear.
I see that JavaScript, for some reason, does not advertise that. We don't
either; we have (?:groups) without flags, and we have (?flags) but only
global at the start of the regex. Would it be worthwhile to jump on the
bandwagon and support local flags in groups?
We currently give 2201B: invalid regular expression: invalid embedded option
on an attempt to use the syntax, so implementing it couldn't break anything
someone is already doing.
Regards,
-Chap
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-02-21 01:13:29 | Re: Some regular-expression performance hacking |
Previous Message | Michael Paquier | 2021-02-20 23:23:02 | Re: Improvements and additions to COPY progress reporting |