Проблема в том, что \b
соответствует между символами слова и несловесными символами, а не между пробелами и непробелами, как вы, кажется, пытаетесь.Разница между .
и 0
заключается в том, что 0
считается символом "слова", а .
- это не
. То, что происходит в ваших примерах, таково:
Давайте возьмем эту последнюю строку ab..
и посмотрим, где \b
может соответствовать:
a b . .
^ x ^ x x
Помните, \b
соответствует между символами.Я показал, где \b
может совпадать с ^
, а где нет с x
.Поскольку \b
может совпадать только перед a
или сразу после b
, мы ограничены только совпадением ab
, если у вас есть эти \b
биты.
Iдумаю, что вы хотите что-то вроде \bab\.?(?!\S)
.Там написано: «граница слова, затем a
, затем b
, а затем, возможно, одна точка, в которой сразу же после НЕ НЕ находится пробел».
Если я неправильно понял ваш вопрос, и вы хотитевыражение для поиска ab.
в строке ab.c
или для поиска ab
в abc
вы можете сделать \bab\.?(?!\.)