Revision 5 as of 2004-12-30 20:03:57

Clear message

Reference Diagrams

http://taoriver.net/img/for_pi/regex_characters.png

flags when compiling:

http://taoriver.net/img/for_pi/regex_flags.png

(All images PD, released by me, author, LionKimbro.)

Searching & Matching

You can search or match.

You can also split on a pattern.

For example:

   1 import re
   2 split_up = re.split( r"(\(\([^)]+\)\))",
   3                      "This is a ((test)) of the ((emergency broadcasting station.))" )

...which produces:

["This is a ", "((test))", " of the ", "((emergency broadcasting station.))" ]

Compiling

If you use a regex a lot, compile it first.

Consider:

   1 import re
   2 match_obj=re.match( "<(.*?)>(.*?)</(.*?)>", "<h1>robot</h1>" )
   3 print mo.groups()

...which outputs: ('h1', 'robot', 'h1')

If you were going to do that match a lot, you could compile it, like so:

   1 import re
   2 match_re=re.compile( "<(.*?)>(.*?)</(.*?)>" )
   3 match_obj=match_re.match( "<h1>robot</h1>" )
   4 print mo.groups()

...which yields the same result.

I don't know how much faster compiled forms are than non-compiled forms.

Links

For those interested in visualization, you may also be interested in a [http://www.ozonehouse.com/mark/blog/code/PeriodicTable.pdf periodic table of PERL operators.]

Discussion

I've made a couple of diagrams, which I've linked at the top of the page here.

I have SVG links as well; [http://taoriver.net/img/for_pi/regex_characters.svg first] and [http://taoriver.net/img/for_pi/regex_flags.svg second.]

Damn the [http://visual.wiki.taoriver.net/moin.cgi/LongImageIncorporationProcess LongImageIncorporationProcess!] Damn it to hell! We'd have a billion pretty pictures here, if tablets were cheap, and we had protocols and implementations for saving and loading straight to and from the wiki.

I have another diagram I'd like to make and place; It's the pattern (RegexObject) and match (MatchObject) API, visualized, and arranged dense. We'll see if I get around to drawing it, but it looks like no. Too much else to do.

-- LionKimbro DateTime(2004-12-28T08:38:12Z)

Unable to edit the page? See the FrontPage for instructions.