2017-02-07 2 views
2

私は現在Java正規表現について学んでいますが、私はエスケープ文字について少し混乱しています。私は、javaの正規表現は基本的に2つのステップのプロセスであることを読んでいます。まず、文字列パーサが文字列を処理してから正規表現を処理します。そういうわけで、パターンには二重のバックスラッシュが必要です。Java正規表現 - エスケープ文字の後ろに二重バックスラッシュまたはシングル?

しかし、エスケープ文字と二重バックスラッシュとシングルの違いは何ですか?たとえば:

Pattern pattern = Pattern.compile("\\ntest"); 

Pattern pattern = Pattern.compile("\ntest"); 

マッチャが真のいずれかの方法を返すために、同じように動作するようです。

Matcher match = pattern.matcher("\ntest"); 

どうして大きな違いがありますか?

+0

改行にマッチさせるために '\ n'と' LF'の両方のパターンを使うことができます。違いはありません。 –

答えて

2

違いはありません。

"\\n"は、\n文字列を正規表現エンジンに送信することを意味します。

"\n"はあなたが正規表現エンジンにLF記号を送る意味

\n      改行(ラインフィード)文字( '\ u000A'):Java regex syntax helpを参照してください。それは特別な意味を持たないので、それ自身と一致します。

したがって、"\\n""\n"の両方の文字列リテラルは、の正規表現パターンと同じものに一致します。

関連する問題