The previous answers are right, but I'd like to point out that searching with a leading wildcard is much less efficient than having a wildcard on the suffix. In other words, looking for "Blah*" is pretty quick because splunk can do an efficient lookup to say find terms start with "Blah". Whereas, searching for "*Blah", splunk must scan all terms looking for ones that ends with "Blah". This type of index lookup will always take longer, but you may or may not notice; that's going to depend on how many unique terms your index contains.
So my suggestion would be to build a list of all possible exceptions types and put them into a big "OR" list:
Step 1: Figure out how may different "*Exception" patterns you really have in your data. (you may want to search over a long time period to make sure you don't miss any.)
source="/home/xyz.log" *Exception: | regex "\.(?<exception>\w+Exception:)" | dedup exception
Step 2: Take that list of terms and combine them into your original search, something like this:
source="/home/xyz.log" (ParseException: OR UserException: OR BlahException: OR ...)
Assuming you don't have all that many exception types, you should end up with a faster search.
You'll also have to ask yourself: How often do new exception types show up? Which is preferable? (1) good performance with the possibly of missing events when new exception types show up, or (2) never missing events, but having a slower search.
There's a helpful video about segmentation here:
http://www.splunk.com/view/SP-CAAACXB
http://www.splunk.com/web_assets/video/2008/dev/PreviewPeeks/Sorkin_Segmentation.swf
... View more