Подтвердить что ты не робот

Что такое граница без слов в регулярном выражении (\ B), по сравнению с границей слов?

Что такое неглавная граница в регулярном выражении (\ B) по сравнению с границей слов?

4b9b3361

Ответ 1

Граница слов (\b) - это совпадение с нулевой шириной, которое может соответствовать:

  • Между символом слова (\w) и символом не-слова (\w) или
  • Между символом слова и началом или концом строки.

В Javascript определение \w равно [A-Za-z0-9_] и \w - это что-то еще.

Отрицательная версия \b, написанная \b, является совпадением нулевой ширины, где указанное выше не выполняется. Поэтому он может соответствовать:

  • Между двумя символами слова.
  • Между двумя символами, отличными от слова.
  • Между символом без слова и началом или концом строки.
  • Пустая строка.

Например, если строка "Hello, world!", то \b соответствует в следующих местах:

 H e l l o ,   w o r l d !
^         ^   ^         ^ 

И \b соответствует тем местам, где \b не соответствует:

 H e l l o ,   w o r l d !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^

Ответ 2

Основной целью non-word-boundary является создание регулярного выражения, которое гласит:

  • если мы находимся в начале/конце a word char (\w= [a-zA-Z0-9_]), убедитесь, что предыдущий/следующий символ также является word char,

    например: "a\B." ~ "a\w":

    "ab", "a4", "a_",... но не "a ", "a."

  • если мы находимся в начале/конце a non-word char (\w= [^a-zA-Z0-9_]), убедитесь, что предыдущий/следующий символ также является non-word char,

    например: "-\B." ~ "-\W":

    "-.", "- ", "--",... но не "-a", "-1"

Для word-boundary он похож, но вместо того, чтобы убедиться, что соседние символы одного класса (word char/non-word car), они должны отличаться, следовательно, имя word boundary.