2010-09-03 38 views
2
final static private Pattern includePattern = Pattern.compile("^\\s+([^\\s]*)"); 

... 

Matcher mtest = includePattern.matcher(" this.txt"); 
String ftest = mtest.group(1); 

我得到一个异常No match found at java.util.regex.Matcher.group(Matcher.java:468)这个java正则表达式有什么问题?

我正在寻找至少1个空格字符,然后捕获组的非空格字符。我哪里错了?

回答

12

您需要先拨打.find(),然后才能使用group(...)

注意find()返回boolean,因此它是安全的(R)做这样的事情:

final static private Pattern includePattern = Pattern.compile("^\\s+([^\\s]*)"); 
Matcher mtest = includePattern.matcher(" this.txt"); 
String ftest = m.find() ? mtest.group(1) : null; 

而且[^\\s]可以改写为\\S(资本s)。

您可能在您的问题中简化了您的示例,但我认为您知道String.trim()负责处理任何前导和尾随空格字符。

+0

DOH!谢谢,它修复了它。 – 2010-09-03 14:25:32

+0

@Jason,然后接受答案。 – 2010-09-03 14:26:32

+0

我不能再等10分钟。 – 2010-09-03 14:27:01

相关问题