這是Perl: add character to begin of a line的後續問題。在每行的開頭添加一些空格(在一個字符串內)
現狀
在現有的Perl腳本我有一個合理的長字符串$str
包含未知數量的換行符(\n
)。現在在字符串的末尾有換行符。
$str = "Hello\nWorld.\nHow is it going?"
的問題
我想在串內的每一行的開始處添加空格的一定(恆定)號:(在這種情況下3)
$str = " Hello\n World.\n How is it going?"
第一種方法 我的第一種方法如下RegEx
$str =~ s/(.*?\n)/ \1/g;
而且緩存的最後一行,這不是一個新行
$str =~ s/(.*)\n(.*)?$/\1\n \2/g;
希望
首先終止。以上幾行完美地工作,完全按照我的意圖進行。但。我知道RegEx是強大的,因此我非常確定,只需一個簡短的RegEx就可以做同樣的事情。不幸的是,我還無法做到這一點。 (這很有可能,我想太複雜了。)
那麼,這個問題有什麼可能呢?
謝謝你的回答。
非常感謝。標誌'm'是失蹤的鑰匙。以上未提及的其他問題:是否有多個空格的縮寫?我不想輸入(或硬編碼)5個或更多空格。 –
@ T.K。 - 你可以這樣做:'my $ indent =''x 5; $ str =〜s/^/$ indent/mg;'這將爲'$ indent'分配五個空格並將其用於替換。 –
這將是一種選擇,是的。但是不可能使用RegEx的「乘法器」:'{n}'? –