On Wed, Jul 10, 2013 at 7:01 PM, Mats Peterson <matsp...@aim.com> wrote: > Chris Angelico <ros...@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 -- http://mail.python.org/mailman/listinfo/python-list