Perl正则表达式替换仅更改每行的第一个字母

时间:2012-05-16 23:02:08

标签: regex perl notepad++

我在做最简单的Perl REGEX时遇到了麻烦。它在Notepad ++中正常工作,但不是Perl。

open FILE, "Something.txt";
while (<FILE>) {
   s/./f/;
    print;
}

但是输出只会将每行的第一个字母改为F.当这个正则表达式清楚地说每个字符都改为F!

4 个答案:

答案 0 :(得分:3)

我暂时没有使用perl,但尝试s/./f/g(g使其成为全局,而不是在第一场比赛后停止,根据Quentin的评论(谢谢))。

答案 1 :(得分:1)

您需要添加g修饰符以使其成为全局,否则它将在第一场匹配后停止。

s/./f/g

答案 2 :(得分:1)

请参阅以下示例代码:

飞行:

$ cat /tmp/test
aaaa
bbbb
cccc

Perl代码(我使用perlconsole

Perl> open FH, "<", "/tmp/test"
1

Perl> while (<FH>) { s/./f/g; print; }
ffff
ffff
ffff


Perl> close FH
1

Perl> 

替换中的 g 修饰符表示所有出现次数,请参阅http://perldoc.perl.org/perlre.html#Modifiers

答案 3 :(得分:0)

您需要标记它以进行全局变更:

open FILE, "Something.txt";
while (<FILE>) {
   s/./f/g;
    print;
}
CLOSE (FILE);