Add one of following before you ask groups.
matcher.find();
matcher.maches();
How this works:
A matcher is created from a pattern by
invoking the pattern's matcher method.
Once created, a matcher can be used to
perform three different kinds of match
operations:
The matches method attempts to match
the entire input sequence against the
pattern.
The lookingAt method attempts to match
the input sequence, starting at the
beginning, against the pattern.
The find method scans the input
sequence looking for the next
subsequence that matches the pattern.
Source: Java Api
I personally recommend you remove multiple whitespace first, then split and trim - viola simple, tested, and works.
Try this:
String s = "William Faulkner - 'Light In August'";
String o[] = s.replaceAll("\\s+", " ").split("-");
String author = o[0].trim();
String bookTitle = o[1].trim();
If you would:
System.out.println(author);
System.out.println(bookTitle);
Then output would be:
William Faulkner
'Light In August'