3 ms·
I think regex performance of Perl is nothing extraordinary. What it is famous for is pushing the scope of matching beyond regular languages. Of all the common
by srean 14y ago
I think regex performance of Perl is nothing extraordinary. What it is famous for is pushing the scope of matching beyond regular languages.
Of all the common scripting languages I think TCL uses a different algorithm for regex matching and is considerably faster than Perl, especially on longer strings. Let me find some corroborating docs.
Ok this has some info http://swtch.com/~rsc/regexp/regexp1.html http://swtch.com/~rsc/regexp/regexp1.html
- jholman 14y agoExactly. Perl regexes have _poor_ performance in terms of running time, but good usability, including by squeezing non-regular features into their allegedly-regular expressions, and also things like numerous and flexible character classes, consistent behaviour for escapes, etc. I love vim, but jesus I can never remember which vim regex metacharacters need escaping to get their meta-meaning, and which need escaping to get their non-meta meaning.
- Leszek 14y ago\v is your friend. http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic
- jholman 14y agoI sort of prefer \V, but same difference I dunno, I haven't used it in the past, because... 1) "It is recommended to always keep the 'magic' option at the default setting, which is 'magic'. This avoids portability problems." 2) Nor do I want to type two extra characters in every damn regex! So, it only occurs to me right now, the right thing to do for me is this: the first instant I'm confused about whether \( means grouping or literal paren, I should immediately start my pattern with \v or \V. No unportability of plugins, no marginal cost on regexes that don't care, marginal benefit when it does matter.
- Leszek 14y agoYeah, that's basically what I do too. No \v on trivial regexes, \v on ones where there's more than one or two groups.