単語境界と比較した、正規表現(\ B)の非単語境界とは何ですか?
2 に答える
単語の境界(\b
)は、以下に一致する可能性のあるゼロ幅の一致です。
- 単語文字(
\w
)と非単語文字(\W
)の間または - 単語文字と文字列の開始または終了の間。
Javascriptでは、\w
is[A-Za-z0-9_]
と\W
isの定義は他のものです。
の否定バージョンは\b
、上記が当てはまらない\B
ゼロ幅の一致です。したがって、一致する可能性があります。
- 2つの単語文字の間。
- 2つの非単語文字の間。
- 単語以外の文字と文字列の開始または終了の間。
- 空の文字列。
たとえば、文字列が次の場所で一致する"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 !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
の基本的な目的はnon-word-boundary
、次のような正規表現を作成することです。
word char
(\w
= )の最初/最後にいる場合は[a-zA-Z0-9_]
、前/次の文字もword char
、、例:
"a\B."
〜"a\w"
:"ab"
、、、 ...しかし"a4"
、で"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's boundary
です。