Subject: Re: cygwin/regex is non-POSIX
From: "U-DHX98431\sthoenna" <[email-masked]>
To: Sam Steingold <[email-masked]>
Cc: [email-masked]
Date: Mon, 19 Jan 2004 12:13:58 -0800

On Mon, Jan 19, 2004 at 01:54:06PM -0500, Sam Steingold <[email-masked]> wrote:
> > * Yitzchak Scott-Thoennes <[email-masked]> [2004-01-17 21:04:50 -0800]:

                               ^^^^^^^^^^^^^^^^
That's cute.  But what if a real address matches a rot13'd one?

> > 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:
> <http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap09.html>
> 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?

I was saying xbd_chap09 (my local copy, haven't rechecked the online one for any changes, but don't expect any) says back references are only available if you *don't* say REG_EXTENDED (or at least that's my reading of it).  The regex package doc (man 3 regex, man 7 regex) also discourage using them even then.

> 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).

Then I misunderstood you.  I thought you were saying REG_BACKR allowed
backrefs even with REG_EXTENDED.  From the include file, it looks more to
me as if it is a private flag to indicate backrefs were actually found.

> 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".

You want the pcre packages then (pcre and pcre-devel).  An important
to know non-posix feature of these is that "ab" matched against /a|ab/
will match the a where AIUI posix requires matching the ab (i.e. posix
requires longest match, but pcre lets leftmost | option take
precedence).  Not actually sure where the regex package falls WRT
this.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/