2010-12-28 3 views
2

は、私は他の人の正規表現をクリーンアップしていますし、彼らが現在

.*$ 

で彼らのすべてを終わらせますか?

.* 
+0

私はマルチラインモードではありません – mrtsherman

+0

それらは同じですが、あなたのクリーンアップでは削除しません。 – marcog

+0

詳細な説明ありがとうございます。私は 'multiline option'と 'dotall'の分岐を考えることは考えていませんでした。 – mrtsherman

答えて

9

.*は可能な限り一致しますが、デフォルトでは.は改行と一致しません。一致するテキストに改行があり、MULTILINEになっていてでない場合、.*$.*と一致しない可能性があります。 DOTALLモード。改行なし(またはMULTILINEでない場合)またはDOTALLを設定している場合は、*が貪欲な操作者であり、可能な限り一致するため、同じです。

最終的には、正解は正規表現エンジンによって異なります。あなたの結果は異なるかもしれません。

+0

Paulは、マルチラインが有効になっていると、動作が異なると言います。あなたは、マルチラインでないなら、異なって振る舞います。私はこれを正しく読んでいますか? – mrtsherman

+0

@mrtshermanあなたは私の読み方が間違っています。 – marcog

1

$はマッチが.が何かを一致するため、常にどうなる文字列の末尾に到達したと主張しています。そう、はい、同じです。

しかし、Paul Creaseyが指摘したように、同じでない場合があります。複数行を有効にすると、$は複数行の文字列の最後に一致します。しかし、dot-all( "dot"がすべて一致)を有効にしない限り、.は改行にマッチすることはできません。

2

必ずしもそうではありませんが、使用されている設定に依存しますが、ほとんどの正規表現エンジンは「複数行」モードを備えています。

関連する問題