Что такое неглавная граница в регулярном выражении (\ 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
.