Re: Stack Overflow moderator “animuson”

Chris Angelico rosuav at gmail.com
Wed Jul 10 05:39:05 EDT 2013


On Wed, Jul 10, 2013 at 7:01 PM, Mats Peterson <matsp999 at aim.com> wrote:
> Chris Angelico <rosuav at gmail.com> wrote:
>> I know what regular expressions are. I've used them in Perl, PHP,
>> JavaScript, Python, C++, Pike, and numerous text editors (which may
>> have been backed by one of the above languages, or may have been
>> something else). Doesn't change the fact that I have no idea what the
>> significance is of your post.
>>
>> ChrisA
>
> You do? And you haven't noticed the inferior performance of regular
> expressions in Python compared to Perl? Then you obviously haven't
> used them a lot.

That would be correct. Why have I not used them all that much? Because
Python has way better ways of doing many things. Regexps are
notoriously hard to debug, largely because a nonmatching regex can't
give much information about _where_ it failed to match, and when I
parse strings, it's more often with (s)scanf notation instead - stuff
like this (Pike example as Python doesn't, afaik, have scanf support):

> data="Hello, world! I am number 42.";
> sscanf(data,"Hello, %s! I am number %d.",foo,x);
(3) Result: 2
> foo;
(4) Result: "world"
> x;
(5) Result: 42

Or a more complicated example:

sscanf(Stdio.File("/proc/meminfo")->read(),"%{%s: %d%*s\n%}",array data);
mapping meminfo=(mapping)data;

That builds up a mapping (Pike terminology for what Python calls a
dict) with the important information out of /proc/meminfo, something
like this:

([
  "MemTotal": 2026144,
  "MemFree": 627652,
  "Buffers": 183572,
  "Cached": 380724,
  ..... etc etc
])

So, no. I haven't figured out that Perl's regular expressions
outperform Python's or Pike's or SciTE's, because I simply don't need
them all that much. With sscanf, I can at least get a partial match,
which tells me where to look for the problem.

ChrisA



More information about the Python-list mailing list