diff options
Diffstat (limited to 'computer/re-ooo.rst')
-rw-r--r-- | computer/re-ooo.rst | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/computer/re-ooo.rst b/computer/re-ooo.rst new file mode 100644 index 0000000..3000b8f --- /dev/null +++ b/computer/re-ooo.rst @@ -0,0 +1,90 @@ +(from discussion on OpenOffice.org questions list) +################################################## + +:date: 2005-11-27T17:21:00 +:category: computer +:tags: OpenOffice, vim, regexp + +Regexp is a fairly complex beast and probably quite unnatural unless you +have some sort of programming training. In that sense it is questionable +how useful regexps are in a generic word processor for the general +public, but if you happen to have regexp experience by using tools like +perl, awk, grep, lex and alike then you can express quite complex +searches efficiently. + +OK, first of all there is a famous `cite of Jamie Zawinski`_: ‘(Some +people, when confronted with a problem, think “I know, I’ll use regular +expressions.” Now they have two problems.)’ There is something about +that ``:-)``. Nevertheless, I use regexps quite often and when limited +to useful level of complexity, they could be quite useful. But, it +**is** difficult to use them and learning curve **is** quite steep. Perl +(probably the best and fastest implementation of RE currently available) +has four manpages for RE (perlrequick, perlretut, perlre, and +perlreref). + +Sideshow for serious geeks: first read this_, `its continuation`_, and +conclusion_. Explanation of this mystery is simple, but thought +provoking—\ `apparently Perl has support for REs so complex, that all +other RE implementations break down on them, but this complexity has its +cost in slightly lower speed`_. And BTW I do not use Perl if I don’t +have to (much prefer Python_, but apparently here Perl is better than +anybody else). + +Back to our main presentation tonight: there seems to be two ways how to +deal with REs in OpenOffice.org (and elsewhere). Either you will ignore +them, or you will bite the bullet and learn them. Actually, the first +way is not so ridiculous as it seems to be. As it was repeated many +times by vi-people (`vi-family editors`_ don’t have anything else than +RE for searching): “plain string is valid RE and as such will be +evaluated” (let’s ignore case sensitivity of REs for a moment); i.e., +when you are searching for “moron”, you can just put “moron” into your +RE field and everything will work as expected. Being in this position +you are not worse off, then if there were no REs at all. + +However, learning REs is not so difficult as it seems to be from looking +at some really advanced examples (yeah, sure you want some examples; +this RE in Python syntax ``r"(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$"`` +parses US phone numbers and returns their parts in different fields; +`courtesy of Mark Pilgrim`_). You can begin for starters with just +something so simple as “\ ``colou?r``\ ” and even that will be +incredibly helpful. Just throw “regular expression tutorial” into your +friendly Google and you will find a lot of stuff which can help. You +have to be aware only of couple of things—first of all, that there are +at least two incompatible lines of REs living well “in wild” (for more +info on that read `aricle on Wikipedia`_). The best way how to deal with +this is to learn just the type of RE used in the application you’re +going to use (for OOo I just randomly stumbled upon `some tutoliar on RE +in OOo`_). BTW, you could just go to Help “List of Regular Expression”, +but it is really just a reference material, which is not enough for +somebody who doesn’t what’s going on. + +The last thing—thank you, OOo developers, that you have included +full-size REs into OOo and not something crippled like `“wildcards” in +M$ Word`_ (which is just a small subset of REs packaged for non-geeks). +This and other things (XSLT filters and scripting, albeit the latter is +severly underdocumented) made OOo much more than just another free +office suite-like (there are others), but serious platform for doing +things in the proper geek-like way. Thanks! + +.. _`cite of Jamie Zawinski`: + http://www.jwz.org/hacks/marginal.html +.. _this: + http://www.tbray.org/ongoing/When/200x/2004/08/22/PJre +.. _`its continuation`: + http://www.tbray.org/ongoing/When/200x/2004/08/26/PJre2 +.. _conclusion: + http://www.tbray.org/ongoing/When/200x/2005/11/20/Regex-Promises +.. _`apparently Perl has support for REs so complex, that all other RE implementations break down on them, but this complexity has its cost in slightly lower speed`: + http://perlmonks.org/index.pl?node_id=502408 +.. _Python: + http://www.python.org +.. _`vi-family editors`: + http://en.wikipedia.org/wiki/Vi +.. _`courtesy of Mark Pilgrim`: + http://www.diveintopython.org/regular_expressions/phone_numbers.html +.. _`aricle on Wikipedia`: + http://en.wikipedia.org/wiki/Regular_expression +.. _`some tutoliar on RE in OOo`: + http://homepage.ntlworld.com/garryknight/linux/ooregexp.html +.. _`“wildcards” in M$ Word`: + http://office.microsoft.com/en-ca/assistance/HP051894331033.aspx |