2016-05-12 9 views
1

.*[.]*の正確な違いは何ですか?大括弧で囲んだ正規表現ドット

私はバックリファレンスのためにこれらのカッコを入れようとしましたが、結果が同じではないことが分かりましたが、なぜわかりません。

.は、任意の1文字と一致するはずです。

だから、角括弧で囲まれているかどうかは、*(0以上の一致)演算子では重要ではないはずです。しかし、それはです。どうして?

+2

起こっていただきまし説明しますhttp://regex101.comにREを差し込みます。 –

答えて

4

.*では、ドットは改行以外の任意の文字に一致する特殊文字です(DOTALL修飾子を指定するとすべての文字と一致します)。文字クラス([.])では、ドットはその特別な意味を失い、リテラルドットとのマッチングを開始します。

これはすべての正規表現のフレーバで共通の動作です。

0
  • .は、改行を除いて任意の文字に一致します。
  • \.は、リテラル"."と一致します。
  • [.]は、[\.]または\.に相当します。これは便宜上のことです。これは、文字グループのコンテキストで「任意の文字」と一致させたくないことがほぼ確実であるためです。

ボーナス - あなたはmy ruby gemを使用している場合、あなたは簡単にこのようなものを試してみることができます。

/./.examples # => ["a", "b", "c", "d", "e"] 
/\./.examples # => ["."] 
/[.]/.examples # => ["."] 
関連する問題