2016-05-06 12 views
2

バックスラッシュと、エスケープの使い方を理解しようとしています。\の正規表現です。Regexで `エスケープ文字列`とは何ですか? (JavaScript)

文字列を使用しているときに、という文字列をエスケープすると、という文字列をエスケープしています。

実際にはどういう意味ですか?正規表現で

+0

[大脱走(または:テキスト内でテキストを操作するために必要なこと)](http://kunststube.net/escapism/) – deceze

答えて

2

正規表現の多くの文字には特別な意味があります。たとえば、ドット文字 '。' 「任意の1文字」を意味する。これらの特別に定義された文字の大部分があり、時々、を検索する場合は、特別な意味を使用しないでください。

が含まれている任意のファイル名を検索するには、この例を参照してください「を。」例で

/^[^.]+\..+/ 

を、そこに3点がありますが、私たちの説明は、我々は一つだけを探していると述べています。ドットでそれを打破してみましょう:

  • ドット#1はないが、「任意の1つの文字」を検索するための正規表現エンジンを告げる「文字クラス」(角括弧内の文字)、内部で使用されています'' 'であり、 "+"はそれ以上文字がないか、次の文字が'。 '私たちが探している
  • ドット#2の前にバックスラッシュがあります。これは、リテラル '。'を探していることを示しています。文字列中に(バックスラッシュなしで、それは "任意の文字"を探している特別な意味を使用しています)。このドットは、特別な意味がこのコンテキストでは使用されていないため、「エスケープ」されていると言われています。その直前のバックスラッシュは起こります。
  • ドット#3は、単に「任意の文字」をもう一度探していて、それに続く「+」は、文字がなくなるまでそれを続けていると言います。

したがって、バックスラッシュは、その直後の文字を「エスケープ」するために使用されます。そのように、それは "エスケープ文字"と呼ばれています。それは、キャラクターの特別な意味がその1つの場所で取り除かれたことを意味します。

文字列をエスケープすると(正規表現では)、特別な意味を持つすべての文字を見つけ出し、他のバックスラッシュ文字の前にもその前にバックスラッシュを置きます。文字列でこれを一度やったとき、あなたは正式に "文字列をエスケープ"しています。

1

Quoting from MSDN:

バックスラッシュ(\)は、次のいずれかを示します。

  1. の表に示すように、それを次の文字は、特殊文字であります続くセクション。たとえば、\ bは正規表現の一致が単語境界で始まり、\ tがタブを表し、\ x020がスペースを表すことを示すアンカーです。

  2. エスケープされていない言語構造として解釈される文字は、文字通り解釈されるべきです。たとえば、中括弧({)は量子の定義を開始しますが、バックスラッシュとそれに続く中括弧(\ {)は、正規表現エンジンが中括弧に一致する必要があることを示します。同様に、単一のバックスラッシュはエスケープされた言語構造の開始を示しますが、2つのバックスラッシュ(\)は正規表現エンジンがバックスラッシュと一致する必要があることを示します。

1

はあなたの「というこの\」を言わせて、文字列をプリントアウトしようと言います。 その\文字は特殊文字として認識されます。それは

this hat 

として印刷するだろうが、\は、文字列から文字を「エスケープ」だから私は、正規表現についてはよく分からないが、JavaやCで言う、\ tはタブの上に文字列の残りの部分を意志その代わりに、私は、これは助けを願ってい

this\that 

につながる「というこの\」を使用して、定期的な意味で、それを導出します。

関連する問題