我在做最简单的 Perl REGEX 时遇到了麻烦。它在 Notepad++ 中正常工作,但在 Perl 中不能正常工作。
open FILE, "Something.txt";
while (<FILE>) {
s/./f/;
print;
}
然而,输出仅将每行的第一个字母更改为 F。当这个正则表达式明确表示将每个字符更改为 F!
我有一段时间没有使用 perl,但是尝试一下s/./f/g
(根据 Quentin 在评论中的说法,g 使它成为全局,而不是在第一场比赛后停止(谢谢))。
您需要添加g
修饰符以使其全局化,否则它将在第一次匹配后停止。
s/./f/g
请参阅以下示例代码:
文件:
$ 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
您需要将其标记为全局更改:
open FILE, "Something.txt";
while (<FILE>) {
s/./f/g;
print;
}
CLOSE (FILE);