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个空格字符,后跟一组捕获的非空格字符。我哪里出错?
答案 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()
会处理任何前导和尾随空白字符。