что не так с этим регулярным выражением Java? - PullRequest
2 голосов
/ 03 сентября 2010
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 Ответ

12 голосов
/ 03 сентября 2010

Сначала вам нужно будет позвонить .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() заботится о любых начальных и конечных пробелах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...