Co to jest granica bez słów w wyrażeniu regularnym (\ B), w porównaniu do granicy słowa?Co to jest granica bez słów w wyrażeniu regularnym ( B), w porównaniu do granicy słowa?
Odpowiedz
Słowo granica (\b
) jest zerowa szerokość mecz, który może się równać:
- między znakiem słowa (
\w
) oraz o charakterze non-word (\W
) lub - między znakiem słownym a początek lub koniec ciągu.
w JavaScript definicja \w
jest [A-Za-z0-9_]
i \W
jest coś innego.
zanegowana wersja \b
, napisany \B
, jest zerowa szerokość mecz gdzie powyższe nie robi chwyt. Dlatego może pasować:
- Pomiędzy dwoma znakami słownymi.
- Pomiędzy dwoma nie-słownymi znakami.
- Pomiędzy znakiem nie będącym słowem a początkiem lub końcem ciągu.
- Pusty ciąg.
Na przykład jeśli ciąg jest "Hello, world!"
następnie \b
mecze w następujących miejscach:
H e l l o , w o r l d !
^ ^^ ^
I \B
mecze tych miejscach, gdzie \b
nie pasuje:
H e l l o , w o r l d !
^^^^ ^^^^^ ^
Podstawowym celem z non-word-boundary
ma utworzyć wyrażenie regularne, które mówi:
jeśli jesteśmy na początku/końcu
word char
(\w
=[a-zA-Z0-9_]
) upewnij się, że poprzedni/następny znak jest równieżword char
,np
"a\B."
~"a\w"
:"ab"
,"a4"
,"a_"
, ... ale nie"a "
,"a."
jeśli jesteśmy na początku/końcu
non-word char
(\W
=[^a-zA-Z0-9_]
) upewnij się, że poprzedni/następny znak jest równieżnon-word char
,np .:
"-\B."
~"-\W"
:"-."
,"- "
,"--"
...ale nie"-a"
,"-1"
Dla word-boundary
jest podobny, ale zamiast upewniając się, że sąsiadujące ze sobą znaków są tej samej klasy (word char
/non-word car
) oni muszą się różnić, stąd nazwa word's boundary
.
Niezły. Z mojego doświadczenia wynika, że * tłumaczenie * granic słów jest znacznie trudniejsze niż * używanie * ich. –
Nie widziałem wcześniej tak wyraźnego wyjaśnienia granic słów. Świetny! – Salil