what is wrong with this java regex?
final static private Pattern includePattern = Pattern.compile("^\\s+([^\\s]*)");
...
Matcher mtest = includePattern.matcher(" this.txt");
String ftest = mtest.group(1);
I get an exception No match found at java.util.regex.Matcher.group(Matcher.java:468)
I'm looking for at least 1 space character followed b开发者_Go百科y a captured group of nonspace characters. Where have I gone wrong?
You'll first need to call .find()
before you can use group(...)
.
Note that find()
returns a boolean
, so it's safe(r) to do something like this:
final static private Pattern includePattern = Pattern.compile("^\\s+([^\\s]*)");
Matcher mtest = includePattern.matcher(" this.txt");
String ftest = m.find() ? mtest.group(1) : null;
And [^\\s]
could be rewritten as \\S
(capital s
).
You might have simplified your example a bit in your question, but I assume you're aware of the fact that String.trim()
takes care of any leading and trailing white space characters.
精彩评论