2009-04-27 7 views

答えて

7
$x =~ s/\n.*/... multiline.../s 

/s修飾子は改行と一致するように.の原因となるシングルライン、としてマッチした文字列を処理するためにPerlを伝えます。通常はそうではなく、観察された動作になります。

+1

私の知る限り、perlはPCREを使用していません。 PCREはperl正規表現の構文を模倣するライブラリです。 – obecalp

+0

私の意図する意味は、特定のライブラリではなく、Perl互換の正規表現エンジンの一般的なセットであるPCREでした。おそらく私の使い方は不適切です。 – chaos

+1

PCREライブラリに関連する質問にどのようにタグを付けるのですか?とにかく、すべての "Perl互換"正規表現フレーバが/ s(または/ m、/ iなど)を使用するわけではありません。 Python、Java、.NETなどの正規表現リテラルのない言語では、代わりに「DOTALL」や「SingleLine」などのコンパイルフラグを使用します。 –

2

あなたの正規表現で 's'修飾子を使用する必要があります。それ以降の改行にマッチします。だから、この:

$x =~ s/\n.*/... multiline.../; 

はこのようになります。

$x =~ s/\n.*/... multiline.../s; 
関連する問題