1. ホーム
  2. regex

[解決済み] 正規表現における「♪」と「♪」の違いについて

2022-03-13 06:06:59

質問

私は正規表現の本を読んでいて、次のような例を見つけました。 \b :

猫は餌を部屋中にばらまいた。

正規表現を使用する \bcat\b という単語は cat を使用することはできませんが catscattered .

について \B は、著者は次のような例を使っています。

9桁のidをそのまま入力してください。

色分けされたパスキーの上に表示されます。

正規表現を使用する \B-\B マッチ - という単語の間に color - coded . 使用方法 \b-\b 一方 -nine-digitpass-key .

なぜ、最初の例では \b を分離するために cat を使用し、2つ目では \B を分離するために - ? 使用方法 \b の例では、先ほどと逆のことを行っています。

その違いを説明してください。

EDIT: また、どなたか新しい例で説明していただけませんか?

どのように解決するのですか?

混乱の原因は、あなたの考え方にあります。 \b はスペースにマッチします(おそらく "b" が "blank" を示唆するからでしょう)。

\b にある空文字列にマッチします。 単語の先頭または末尾 . \B は、単語の最初でも最後でもない空の文字列にマッチします。 ここで重要なのは、"-" は単語の一部ではないということです。 つまり <left>-<right> マッチ \b-\b の両側には単語の境界があるためです。 - . 一方 <left> - <right> (スペースに注意)ダッシュの両側には単語の境界線がありません。 単語の境界は、さらに左右に1つずつスペースがあります。

一方、検索時に \bcat\b 単語境界はより直感的に動作し、予想通り " cat " とマッチします。