Что такое неглавная граница в регулярном выражении (\ B) по сравнению с границей слов?
Что такое граница без слов в регулярном выражении (\ B), по сравнению с границей слов?
Ответ 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.