Regex Perl正则表达式替换只更改每行的第一个字母
我在做最简单的Perl正则表达式时遇到困难。它在Notepad++中工作正常,但在Perl中工作不正常Regex Perl正则表达式替换只更改每行的第一个字母,regex,perl,notepad++,Regex,Perl,Notepad++,我在做最简单的Perl正则表达式时遇到困难。它在Notepad++中工作正常,但在Perl中工作不正常 open FILE, "Something.txt"; while (<FILE>) { s/./f/; print; } 打开文件“Something.txt”; 而(){ s//f/; 印刷品; } 但是,输出仅将每行的第一个字母更改为F。当此正则表达式明确表示将每个字符更改为F时 我已经有一段时间没有使用perl了,但是尝试一下s//f/g(根据昆廷在评论中
open FILE, "Something.txt";
while (<FILE>) {
s/./f/;
print;
}
打开文件“Something.txt”;
而(){
s//f/;
印刷品;
}
但是,输出仅将每行的第一个字母更改为F。当此正则表达式明确表示将每个字符更改为F时 我已经有一段时间没有使用perl了,但是尝试一下
s//f/g
(根据昆廷在评论中的说法,g使它成为全局的,而不是在第一次匹配后停止(谢谢))。我已经有一段时间没有使用perl了,但是尝试一下s//f/g
(根据昆廷在评论中的说法,g使它成为全局的,而不是在第一次匹配后停止)(谢谢))。您需要添加g
修饰符以使其全局化,否则它将在第一次匹配后停止
s/./f/g
您需要添加
g
修饰符以使其全局化,否则它将在第一次匹配后停止
s/./f/g
您需要将其标记为全局更改:
open FILE, "Something.txt";
while (<FILE>) {
s/./f/g;
print;
}
CLOSE (FILE);
打开文件“Something.txt”;
而(){
s//f/g;
印刷品;
}
关闭(文件);
您需要将其标记为全局更改:
open FILE, "Something.txt";
while (<FILE>) {
s/./f/g;
print;
}
CLOSE (FILE);
打开文件“Something.txt”;
而(){
s//f/g;
印刷品;
}
关闭(文件);
请参见以下示例代码:
fle:
$ cat /tmp/test
aaaa
bbbb
cccc
Perl代码(我使用perlconsole
)
Perl>openfh,“参见以下示例代码:
fle:
$ cat /tmp/test
aaaa
bbbb
cccc
Perl代码(我使用perlconsole
)
Perl>open FH,“行的开头应该是s/^./g/
。全局意味着它在第一次匹配后不会停止。行的开头应该是s/^./g/
。全局意味着它在第一次匹配后不会停止。mhhh?发生了什么事(为什么被否决?)?您测试过此代码吗?:/您似乎在代码较多但清晰度较低的情况下,重复了问题…但没有实际回答。编辑后,示例输出与我期望(编辑)代码输出的内容或询问者想要的内容不符。它也属于“发现差异解决方案”类别无法突出显示更改的内容或解释更改的原因。再次编辑以解释更改的内容。=)mhhhh?发生了什么事(为什么被否决?)?你测试过这个代码吗/你似乎有,更多的代码,但不够清晰,重复了问题…没有实际回答它。编辑后,样本输出与我期望的(编辑的)代码输出不匹配,或者询问者正在寻找的不匹配。它也属于“发现差异解决方案”的范畴,无法突出显示发生了什么变化或解释为什么。再次编辑以解释发生了什么变化。=)后面的斜杠有什么原因吗?后面的斜杠有什么原因吗?