我在做最简单的Perl REGEX时遇到了麻烦。它在Notepad ++中正常工作,但不是Perl。
open FILE, "Something.txt";
while (<FILE>) {
s/./f/;
print;
}
但是输出只会将每行的第一个字母改为F.当这个正则表达式清楚地说每个字符都改为F!
答案 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);