1.概要

  「\ Bは、」単語の境界と一致して、任意の文字に一致しません.

  「\ B」マッチ位置のみ、この位置は、先頭または末尾の非単語文字列の反対側の単語を構成する文字の側面であります.「\ Bは」ゼロ幅であります.

  基本的にはすべての言うにおける「\ B」情報のワード境界が、「言葉」の範囲ですが、それはほとんど言及されていません.通常の状況下では、いわゆる「単語」を含むサブストリング正規表現は、で定義されている「W \」から文字です.

  「\ B」はサイド語文字の位置を表し、先頭や末尾の非単語の文字列の反対側には、それは同等です

  (?

  質問:なぜには、以下の文言と等価ではありません「\ B」

  (?<=\W)(?=\w)|(?<=\w)(?=\W)

  レンジ2 \のワット

  今、「\ W」に関連している、我々は最初にその範囲を見なければなりません.

  [-ZA-Z0-9_]と等価である "W \" ジャワScriptをなどのASCIIコードに言語サポート、、.

  言語Unicodeサポートでは、など.NETは、デフォルトでは、「\ wは」また、文字、図形等の全角などのUnicode文字セットの数を、一致させることができ、他の[-ZA-Z0-9_]を一致させます.

  そのような規則に従うようにほぼすべての一般的な言語、ジャワだけは例外です.Javaでは、パフォーマンスは "\ワット" ではなく、奇妙なJavaのサポートUnicodeのが、Javaの正規た "\ W" [-ZA-Z0-9_]のと同じです.

  初見の例「\ w」のいくつかの言語での試合

  JavaScriptを

  コードのコードをコピーして、次のとおりです.

  

  // JavaScriptの出力

  abc_123

  _d3

  EFG

  C#の

  コードのコードをコピーして、次のとおりです.

  文字列のテスト= "漢字abc_123 _d3 = EFG%";

  MatchCollection MC =正規表現.マッチ(テスト、@ "\ W +");

  foreachの(MCのマッチM)

  {

  richTextBox2.テキスト+ = M.値+ "\ n" は、

  }

  // C#出力

  abc_123温家宝_d3

  EFG文字

  Java

  コードのコードをコピーして、次のとおりです.

  文字列のテスト= "漢字abc_123 _d3 = EFG%";

  文字列REG = "\\ + W".

  マッチャーメートル=パターン.コンパイル(REG).マッチャ(テスト).

  (M一方.見つけます())

  {

  システム.でる.println(M.グループ());

  }

  // Java出力

  abc_123

  _d3

  efg

  あなたはJavaとJavaScriptでの出力が同じである「W \」、見ることができ、ASCII文字のみをサポートしています.

  3 \ Bの範囲

  共通言語「\ wは」範囲を決定する、それが考慮されていない「\ b」はそれと一致している「W \」の範囲と一致し、?

  以下の実施例の下で見て:

  文字列出典:漢字abc_123 _d3 = EFG

  正規表現:.\ B.

  JavaScript

  コードのコードをコピーして、次のとおりです.

  

  // JavaScriptの出力

  3中

  文_

  3 =

  g汉

  C#の

  コードのコードをコピーして、次のとおりです.

  文字列のテスト= "漢字abc_123 _d3 = EFG%";

  MatchCollection MC =正規表現.マッチ(テスト、@ ".\b.");

  foreachの(MCのマッチM)

  {

  richTextBox2.テキスト+ = M.値+ "\ n" は、

  }

  // C#出力

  3=

  字%

  Java

  コードのコードをコピーして、次のとおりです.

  文字列のテスト= "漢字abc_123 _d3 = EFG%";

  文字列REG = ".\\ B.";

  マッチャーメートル=パターン.コンパイル(REG).マッチャ(テスト).

  (M一方.見つけます())

  {

  システム.でる.println(M.グループ());

  }

  // Java出力

  3=

  字%

  Javaとの出力することが分かります.NETが同じで、Javaで "\ B" はUnicodeです.

  全体的に、Javaで「\ wは」非常に奇妙である、と「\ b」は注意を払うに使用を必要としている他の言語のパフォーマンスと一致しています.

  4つの\ Bシナリオ

  4.1基本的なアプリケーション

  「\ B」は、一般的にサブストリングの文字にマッチする単語のニーズに使用されますが、文字が同じ単語文字が長いストリングに含めることはできません.

  「B \ BTO \」たとえば「に」いくつかの英語の単語を置き換えるために尋ねると、「今日は」明確に置換範囲ではありません、それは定期的によって定義することができます.

  より多くのシーンマッチングHTMLタグよりも使用され、各タグは除外するために、例えば、区別するために含ま、、、そして、他のラベルは、しかし、あなたは維持したいです
通常のラベルには、 "のように書くことができます.<(/?b|p|img)\b[^>] *> ".

  例:では統計「」セグメント化された要素 『3』の番号

  文字列のテスト=「137,1,33,4,3,6,21,3,35,93,2,98」.

  int型のカウント=正規表現.マッチ(テスト、@ "\ B3 \ B").カウント; //結果:2

  4.2つの高度なアプリケーション

  もう少し複雑なアプリケーションは、多くの場合、他のいくつかの定期的な文法規則、参照記事と連動して使用されています

  正規表現を探しています

  4.3つの特別な事情

  正規表現で使用される「\ B」、通常は単語の境界は、バックスペースキーを表し、グループ内の唯一の文字、であることを示します

  [AZ \ B]

  ここで「\ b」はバックスペースキーではなく、単語の境界を表し、.

\ bは単語の境界の基礎

Recommend Article: