是否可以指定要替换的最大匹配数。例如,如果匹配“Hello World”中的 'l',是否可以替换前 2 个 'l' 字符,而不是不循环替换第三个字符?
最佳答案
$str = "Hello world!";
$str =~ s/l/r/ for (1,2);
print $str;
我不明白循环有什么不好。
其实有一个方法:
$str="Hello world!";
$str =~ s/l/$i++ >= 2 ? "l": "r"/eg;
print $str;
这是一个循环,因为当你这样做时 s///g 以一种循环的方式工作。但不是传统的循环。
关于regex - Perl 正则表达式替换计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482259/