[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: why are \d and \D not implemented but don't throw errors in regex?
From: |
Linda Walsh |
Subject: |
Re: why are \d and \D not implemented but don't throw errors in regex? |
Date: |
Tue, 10 Dec 2013 12:28:03 -0800 |
User-agent: |
Thunderbird |
On 12/7/2013 3:33 PM, Peter Cordes wrote:
I agree your complaint seems valid, but it's the behaviour of the
regex engine built into GNU libc (in this case). Bash on other
platforms would use the regex engine in their system libc. (Unless
I'm mistaken in my assumption that bash doesn't have its own regex
engine.)
----
Maybe Bash could follow the example of GNU grep and add the defacto
perl standard as listed here: http://en.wikipedia.org/wiki/Regular_expression
There, it lists the simple and extended posix, and the third standard being
perl's RE:
"The Perl standard is still evolving in Perl 6, but the current
set of symbols and syntax has become a de facto standard.
Largely because of its expressive power, many other utilities and
programming languages have adopted syntax similar to Perl's — for example,
Java, JavaScript, Python, Ruby, Microsoft's .NET Framework, and the W3C's
XML Schema all use regular expression syntax similar to Perl's. Some
languages and tools such as Boost and PHP support multiple regular
expression flavors. Perl-derivative regular expression implementations are
not identical and usually implement a subset of features found in Perl 5.0,
released in 1994. Perl sometimes does incorporate features initially found
in other languages, for example, Perl 5.10 implements syntactic extensions
originally developed in PCRE and Python
An option:
shopt -s regex=(basic|[extended]|pcre)
where 'extended' is the default would be a
great extension.
Likely bash could just copy the re-engine selection and use-code from
grep...
Certainly wouldn't violate posix to have such an option.