Hey Steven, Thank you for the detailed (and well-written) tutorial on this very issue. I actually learned a few things! Though, I still have unresolved questions.
The reason I don't want to use an XML parser is because the tokens are not always placed in HTML, and even in HTML, they may appear in strange places, such as <h1 $foo(x=3)>Hello</h1>. My specific issue is I need to match, process and replace $foo(x=3), knowing that (x=3) is optional, and the token might appear simply as $foo. To do this, I decided to use: re.compile('\$\w*\(?.*?\)').findall(mystring) the issue with this is it doesn't match $foo by itself, and requires there to be () at the end. Thanks, Frank -- http://mail.python.org/mailman/listinfo/python-list