> On 2018 Jun 13 , at 7:06 a, Ken Hilton <kenlhil...@gmail.com> 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 Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/