一\b
度も使ったことがないものがあるので、なくてはならないユースケースを誰かに教えてもらえないかと思っていました\b
。
3 に答える
\ bなしではできない場合に、誰かが私にユースケースを教えてくれるかどうか疑問に思いました。
この式\b
は、他の構成ですでに実行できることの便利な省略形です。
たとえば、正規表現エンジンにルックアラウンドがある場合\b
、次のより長い式と同等です。
(?<=\w)(?!\w)|(?<!\w)(?=\w)
同様\w
に\d
、、などは、文字クラスを使用してすでに実行できることの省略形です。たとえば[A-Za-z0-9_]
、または[0-9]
。毎回完全な定義を書き出すのは面倒で読みにくく、エラーが発生するリスクが高くなるため、通常は短いバージョンを使用します。
それらは異なるものに\s
一致します-空白、\b
単語の境界に一致します。
1つの良い例は文字.
です。
文字列内hello.hi
:
\s
は一致しません.
が、\b
前後で一致します。
それらは完全に異なるものです。
\s
「空白文字」です。つまり、\t, \r, \n
またはスペースのような空白文字を含む事前定義された文字クラスへのショートカットです。\s
それらの文字の1つに一致します。
\b
「単語の境界」です。これはゼロ幅のアサーションであり、事前定義された文字クラスに関連してい\w
ます。ゼロ幅アサーションとは、幅が0である、つまり文字と一致しないことを意味します。アサーションを満たす位置と一致します。ここでのアサーションは、一方が単語文字で、もう一方が非単語文字になります。マークはすでに長いバージョンを提供し、\b
一致する例\b
をOdedしました。
\w
は「単語文字」であり、のようなものが含まれていることを意味します[a-zA-Z0-9_]
。一部の言語では、Unicodeに基づいており、すべての文字が含まれています。