web-dev-qa-db-ja.com

グローバル正規表現置換ですべての一致をキャプチャするにはどうすればよいですか?

少しの回避策でこれを実現できることはわかっていますが、もっと簡単な方法があることを願っています(このタイプの式をよく利用するため)。

文字列の例を考えます:

my $str = "An example: sentence!*"

正規表現を使用して、各句読点を照合し、配列に取り込むことができます。その後、次のコードのように、正規表現を繰り返して一致を置き換えるだけです。

Push (@matches, $1), while ($str =~ /([\*\!:;])/);
$str =~ s/([\*\!:;])//g;

これをPerlの単一のステップに結合して、置換された一致のタブを維持しながら置換が大まかに発生する可能性はありますか?

4
Jakobus du Toit

試してください:

my $str = "An example: sentence!*";

Push(@mys, ($str=~m/([^\w\s])/g));

print join "\n", @mys;

ありがとう。

0
ssr1012