This is the mail archive of the
mailing list for the Cygwin project.
Re: cygwin/regex is non-POSIX
- From: Sam Steingold <sds at gnu dot org>
- To: cygwin at cygwin dot com
- Date: Mon, 19 Jan 2004 13:54:06 -0500
- Subject: Re: cygwin/regex is non-POSIX
- Organization: disorganization
- References: <firstname.lastname@example.org> <20040118050449.GA3672@efn.org>
- Reply-to: sds at gnu dot org
> * Yitzchak Scott-Thoennes <email@example.com> [2004-01-17 21:04:50 -0800]:
> On Thu, Jan 15, 2004 at 03:14:57PM -0500, Sam Steingold <firstname.lastname@example.org> wrote:
>> the cygwin regex is not POSIX.
>> backrefs are not available by default (apparently you need REG_BACKR for
>> that), "(a|)*" cannot be compiled because of "empty (sub)expression",
>> &c &c.
> SUSv3 says:
> A vertical-line appearing first or last in an ERE, or immediately
> following a vertical-line or a left-parenthesis, or immediately
> preceding a right-parenthesis, produces undefined results.
Thanks, you are right, complaint is withdrawn.
> Also, it says backrefs part of basic regular expressions but not
> exteneded ones. From your mention of | I assume you are using
> REG_EXTENDED. If REG_EXTENDED|REG_BACKR allows backrefs, it doesn't
> appear to be documented.
I am not sure what you mean here. I would like to interpret your words
as follows, so that I can agree with you:
does not mention REG_BACKR, so it's mere presence can probably be
contrued as a violation of the standard (unless it is enabled whenever
REG_EXTENDED is). REG_BACKR is also not mentioned in "man regex", so
it is not documented. Right?
Now, whether I add REG_BACKR to cflags (together with REG_EXTENDED) or
eflags, I do not get back references: "^(x)+\\1$" does not match "xx"
(should be "xx" for whole and "x" for the group).
Finally, a common extension appears to be the use or "?" after a
repetition specification to mean non-greedy matching, e.g.
"a+?" will match only the first "a" in "aaaa".
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
When C++ is your hammer, everything looks like a thumb.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html