これはPerl: add character to begin of a lineへのフォローアップの質問の一種です。各行の先頭に空白を追加します(1つの文字列内)
状況
私は改行(\n
)の未知数を含む合理的な長い文字列$str
を持っている既存のPerlスクリプト内。文字列の最後に改行があります。 (この場合は3)
$str = " Hello\n World.\n How is it going?"
:私は、文字列内の各行頭の空白の特定の(一定の)数を追加したい
$str = "Hello\nWorld.\nHow is it going?"
通報
最初のアプローチ 私の最初のアプローチは次のとおりでした。RegEx
$str =~ s/(.*?\n)/ \1/g;
そして新しい行で終了されていない最後の行、
$str =~ s/(.*)\n(.*)?$/\1\n \2/g;
ウィッシュ
ファーストをキャッシュします。上記の行は完全に動作し、私が意図した通りに動作します。しかし。私は、RegExは強力であり、私はかなり確信しています.1つの短いRegExで同じことをすることができます。残念ながら、私はまだこれを達成することができませんでした。 (それは非常に複雑すぎると思っている可能性が非常に高いです。)
この問題はどのような可能性がありますか?
ありがとうございます。
ありがとうございます。フラグ「m」が欠落していました。上記以外の質問:複数のスペースの省略形はありますか?私は5つ以上のスペースを打ち込む(またはハードコード)したくない。 –
@ T.K。 - あなたは次のようにすることができます: '$ $ indent = '' x 5; $ str =〜s/^/$ indent/mg; 'これは' $ indent'に5つのスペースを割り当て、置換に使用します。 –
それは一つの選択肢、はいです。しかし、RegExの 'multiplicators'を使うことはできません: '{n}'? –