> On 2018 Jun 13 , at 7:06 a, Ken Hilton <[email protected]> wrote:
>
> Hi all,
>
> Regexes are really useful in many places, and to me it's sad to see the
> builtin "re" module having to resort to requiring a source string as an
> argument. It would be much more elegant to simply do "s.search(pattern)" than
> "re.search(pattern, s)".
> I suggest building all regex operations into the str class itself, as well as
> a new syntax for regular expressions.
I think you'll have to be more specific about why it is sad to pass strings to
a function.
There already is a class that has all the methods you want, although with the
roles of regex and string reversed
from what you want.
>>> x = re.compile(r'[a-z]') # x = !%a-z%!, or what have you
>>> type(x)
<type '_sre.SRE_Pattern'>
>>> x.findall("1a3c5e7g9i")
['a', 'c', 'e', 'g', 'i']
Strictly speaking, a regular expression is just a string that encodes of a
(non)deterministic finite automata.
A "regex" (the thing that supports all sorts of extensions that make the
expression decidedly non-regular)
is a string that encodes ... some class of Turing machines.
[Aside: A discussion of just what they match can be found at
http://nikic.github.io/2012/06/15/The-true-power-of-regular-expressions.html,
which suggests they can
match context-free languages, some (but possibly not all) context-sensitive
languages, and maybe some languages
that context-sensitive grammars cannot not. Suffice it to say, they are
powerful and complex.]
I don't think it is the job of the str class to build, store, and run the
resulting machines, solely for the
sake of some perceived syntactic benefit.
I don't see any merit in adding regex literals beyond making Python look more
like Perl.
--
Clint
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/