Regex Perl:反转第一个';N';使用替换运算符在给定输入行中的字数。保持间距不变
我是Perl模式匹配的初学者 在解决以下问题时要面对问题 编写一个程序,使用替换运算符反转给定输入行中第一个“N”字数的顺序。保持间距不变 下面的程序正在倒转,直到最后一句话!我无法限制替换运算符打断@n个单词Regex Perl:反转第一个';N';使用替换运算符在给定输入行中的字数。保持间距不变,regex,perl,Regex,Perl,我是Perl模式匹配的初学者 在解决以下问题时要面对问题 编写一个程序,使用替换运算符反转给定输入行中第一个“N”字数的顺序。保持间距不变 下面的程序正在倒转,直到最后一句话!我无法限制替换运算符打断@n个单词 #!/usr/bin/perl $str = "Test TEST test tesT tESt"; $str =~ s/(\w+)(\s*)/reverse($1) . $2/ge; print $str . "\n"; 有谁能帮我用代换算子解决这个问题吗? 是否真的可以使用替
#!/usr/bin/perl
$str = "Test TEST test tesT tESt";
$str =~ s/(\w+)(\s*)/reverse($1) . $2/ge;
print $str . "\n";
有谁能帮我用代换算子解决这个问题吗?
是否真的可以使用替换运算符限制@n个单词?我想这需要分两步完成 使用创建一个单词数组
\b(\w+)\b
输出:['Test','Test','Test','Test','Test']
现在,从给定的数组中,让我们假设字数为3
因此,您可以从数组的索引2
开始向后创建一个新列表,并将索引3
中的其余元素追加
然后您可以将其转换为字符串。您可以跟踪计数并决定
$i
的值是否反转$1
my $str = "Test TEST test tesT tESt";
my $i = 0;
$str =~ s/(\w+)/ ++$i <3 ? reverse($1) : $1 /ge;
print $str, "\n";
输入=>“测试”。如果我们想倒转前三个字。Output=>“tseT-tseT-tseT-tesT-tesT”。难道你不能拆分、颠倒顺序并重新放置吗?实际上我只想在模式匹配中使用替换方法。比如,$str=~s/(\w+)(\s*)/反向($1)$2/通用电气
/(\w+)/g
本身就足够好了。如果没有任何其他模式的干扰,它将始终有一个\b
之前(否则它会更早开始匹配)和之后(否则它会匹配更多)。这就是我一直在寻找的!!只是增加了一些东西来满足“保持间距不变”的要求:$str=~s/(\w+)(\s*)/++$i
tseT TSET test tesT tESt