2010-11-22 14 views
13

  • ^\Aの違いは何ですか?
  • $\Zの違いは何ですか?
+0

どの言語の正規表現のフレーバですか? –

+0

PHPで。 PHP 5.3はPCRE(Perl互換のReg Ex)のみを使用し、他のENGinesはPCREにとって有利です。だから、基本的にPERLスタイル –

+0

関連:http://stackoverflow.com/questions/4020792/regular-expressions-difference-between-and-a –

答えて

10

シングルラインモードでは、$は、文字列の末尾に一致するか、文字列の最後に改行の直前に一致します。複数行モードの場合、$は文字列の各改行の前に一致します。 \Zは、行モードに関係なく常に文字列の末尾にのみ一致します。 ^と同じ\Aと同じです。

+2

申し訳ありませんが、それは正しくないです。 '\ Z'は最後の文字が' \ n'なら文字列の終わりの前の文字列** OR ** **の終わりにマッチします。オハイオ州ジャスト・イン・ケースのバージョンでは、 '\ z'(BIG ZEDではない)が必要です。これは、文字が残っていない場合にのみ一致することが保証されています。いくつかの正規表現言語では、改行として扱われるものは柔軟性があります。あなたが運が良ければ '(?:(?> \ r \ n)| \ v)'に一致します。ここで '\ v 'はUnicodeの' \ p {Vertical_Space}'プロパティです。 – tchrist

+0

もう一つのこと:シングルラインモードは、マルチラインモードの反対ではありません。彼らは完全に別々です。マルチラインモードは、記述したように '^'と '$'の動作を変更しますが、シングルラインモードでは '.'で改行文字をマッチさせることができます。 –

+1

tchristのコメントへの注意:Pythonの 're'では' \ Z'はPerl/.NET/Java/PCREの '\ z'と同じです。 –

3

文字列を複数の行にマッチさせる場合は異なります。

^は、各改行後に文字列の先頭で一致することができます。 \ Aは文字列の先頭に一致するだけです

$は、各改行の前に文字列の最後に一致することができます。 \ Zは文字列の最後にのみ一致します。

7

perldoc perlreを参照してください。

\ Aと\ Zは「^」ながら、/ m修飾子は を使用しているとき、彼らは 複数回と一致しないことを除いて、単に「^」と 「$」のようなものと、「$すべての内部線の境界に で一致します。 と一致させるには、 はオプションの末尾改行を無視しません。 は\ zを使用します。