这个java正则表达式有什么问题?

时间:2010-09-03 14:22:56

标签: java regex

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)

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

1 个答案:

答案 0 :(得分: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()会处理任何前导和尾随空白字符。