1

コード:

#!/usr/bin/perl
my $string="string\nstring2\nstring3";
print "$string\n-----\n";
$string=~s/^.*$/_/;
print "$string\n-----\n";

出力:

string
string2
string3
-----
string
string2
string3
-----

期待される成果:

1:

string
string2
string3
-----
_
-----

2:

string
string2
string3
-----
_
string2
string3
-----

3: (/m 修飾子と同様):

string
string2
string3
-----
_
_
_
-----

質問:なぜ/m ^..$壊れたものがないのですか?正規表現ドキュメントで見逃したものは何ですか?

4

2 に答える 2

4
  • /s.改行に一致させます。
  • /m^and$は、入力の開始と終了ではなく、行の開始と終了に一致させます。
  • /gすべての一致が置き換えられます。

そう、

  • (1)を使用して取得できますs/^.*$/_/s;
  • (2)を使用して取得できますs/^.*$/_/m;
  • (3)を使用して取得できますs/^.*$/_/mg;
于 2012-10-24T01:54:38.233 に答える
2

使用s修飾子:

文字列を 1 行として扱います。つまり、「。」を変更します。通常は一致しない改行であっても、任意の文字に一致します。

$string=~s/^.*$/_/s;
于 2012-10-24T01:37:16.183 に答える