bnf2xml will be a great aid for the more difficult of Mathematica pattern matching or searching tasks which (ie. RegularExpression[]) make difficult or impossible on the upper end.
1) BNF supplies an easier yet more powerful language than regex.
2) XML text output of matches means none of the context of matches is lost* and is plain on the face readable, searchable, ready for db.
3) powerful parsing / recursion ability is more than you'd want to write to do a "custom" complex search trying to "go without".
This simple C text filter works with Mathematica or any mathematics project. Even if not useful to one, the theory of operation is good knowlege.
* RegularExpression[] stores some context haphazardously in un-knowable un-named arrays.