这是Perl的一个后续问题:在一行开头添加字符.
情况
在现有的Perl脚本中,我有一个合理的长字符串,$str其中包含未知数量的换行符(\n).现在在字符串的末尾有换行符.
$str = "Hello\nWorld.\nHow is it going?"
Run Code Online (Sandbox Code Playgroud)
问题
我想在字符串中每行的开头添加一定数量的(常量)空格:(在本例中为3)
$str = " Hello\n World.\n How is it going?"
Run Code Online (Sandbox Code Playgroud)
第一种方法 我的第一种方法是以下RegEx
$str =~ s/(.*?\n)/ \1/g;
Run Code Online (Sandbox Code Playgroud)
并缓存最后一行,它不是由新行终止的
$str =~ s/(.*)\n(.*)?$/\1\n \2/g;
Run Code Online (Sandbox Code Playgroud)
愿望
第一.以上几行完美无缺,完全符合我的意图.但.我知道,RegEx是强大的,因此我很确定,只需一个简短的RegEx就可以做同样的事情.不幸的是,我还没有实现这一目标.(这很有可能,我认为太复杂了.)
那么,人们对这个问题有什么可能性呢?
谢谢你的回答.
改为匹配每一行的开头,或许:
$str =~ s/^/ /mg;
Run Code Online (Sandbox Code Playgroud)
来自perlre:
^ - 匹配行的开头.m- 处理字符串多行,^并$匹配行开头和结束字符串中的任何位置,而不仅仅是整个开头和结尾.g - 全局 - 适用于找到的每场比赛.