On Tue, Oct 11, 2022 at 12:38:44PM -0700, Koichi Murase wrote:
> As far as I know, glob/extglob
> does not have constructs that cannot be represented by formal regular
> languages so should always be able to be represented by NFAs and thus DFAs.

It's been too many decades since I studied this stuff in college, but
earlier while reading the thread I was pondering converting extglobs
into (ERE) regular expressions.

Extglobs add 5 features:

              ?(pattern-list)
                     Matches zero or one occurrence of the given patterns
              *(pattern-list)
                     Matches zero or more occurrences of the given patterns
              +(pattern-list)
                     Matches one or more occurrences of the given patterns
              @(pattern-list)
                     Matches one of the given patterns
              !(pattern-list)
                     Matches anything except one of the given patterns

The first 4 can be converted directly into ERE without any issues at all.
The last one cannot.  At least not easily.

The part I can't remember is whether !(foo) can be expressed in a regular
language.  My gut says "no", but there might be some trick that I've
forgotten.  A regular language has concatenation (abc), union (abc|def),
and close (a*bc*) but not negation.

Reply via email to