Что такое граница слова в регулярных выражениях? - PullRequest
95 голосов
/ 25 августа 2009

Я использую регулярные выражения Java в Java 1.6 (среди прочего, для разбора числового вывода) и не могу найти точное определение \b («граница слова»). Я предполагал, что -12 будет «целочисленным словом» (соответствует \b\-?\d+\b), но, похоже, это не работает. Буду признателен за информацию о способах сопоставления разделенных пробелами чисел.

Пример:

Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*");
String plus = " 12 ";
System.out.println(""+pattern.matcher(plus).matches());
String minus = " -12 ";
System.out.println(""+pattern.matcher(minus).matches());
pattern = Pattern.compile("\\s*\\-?\\d+\\s*");
System.out.println(""+pattern.matcher(minus).matches());

Возвращает:

true
false
true

Ответы [ 12 ]

0 голосов
/ 19 ноября 2017

при использовании \\b(\\w+)+\\b, что означает точное совпадение со словом, содержащим только символы слова ([a-zA-Z0-9])

в вашем случае, например, установка \\b в начале регулярного выражения примет -12 (с пробелом), но снова не примет -12 (без пробела)

для справки, чтобы поддержать мои слова: https://docs.oracle.com/javase/tutorial/essential/regex/bounds.html

0 голосов
/ 25 августа 2009

Я думаю, что это граница (то есть после символа) последнего совпадения или начала или конца строки.

...