When not tied to Java-only, you can use another language's PEG parser or Rebol ( it has a parse "dialect" that is PEG-equivalent ) -- or reach WAY back for Icon or Unicon or now even Object Icon at code.google.com/p/objecticon
It was a sorry moment when I realized that the MIT Curl web content language (www.curl.com) had opted for regexp for users even though Curl has macros and offers access to an AST.
general topic : Parser Expression Grammar (PEG) and packrat parsing in general.
Perl use has bequeathed us PCRE, so what can we do but avoid it when not needed ( there are the antlr and bison ... and no doubt they too have their place where they fit easily )
Note: Rebol, Icon and Curl are expression-based languages ( Icon has limited back-tracking ).
Other out-a-the way options include Oz and Mercury ( latter can output erlang )
I am not using pyPEG because I am confined to Python 2.6.6 ; the python parse Lepl is no longer supported - but will install for 2.6
Parsing options in Python include YAPPS at http://theory.stanford.edu/~amitp/yapps/ and various others; note: pyparsing fails to install in some python env's
And for Scala/Java there is this PEG project : https://github.com/sirthias/parboiled/wiki
You may find a Java equiv to peg and leg per http://piumarta.com/software/peg/
CiteSeer has the Ralph Becket article on packrat parsing and Mercury (google for PEG parse mercury site:psu.edu)
There is also a series of 3 blog posts in AdventuresInMercury blog.