1

我正在尝试替换字符串中逗号或连字符的所有实例$charlie。这是我最初尝试的代码:

#!/usr/bin/perl
use strict;
use warnings;

my $charlie = "Charlie, 59, 2009";
print "Old Charlie: $charlie\n";
$charlie =~ s/[\,-]/ /;
print "New Charlie: $charlie\n";

这将产生输出:

C:\scripts\perl\sandbox>charlie_substitute.pl
Old Charlie: Charlie, 59, 2009
New Charlie: Charlie  59, 2009

如您所知,只有第一个逗号被空格替换。为了解释多个逗号,我将正则表达式更改为,$charlie =~ s/[\,-]{1,2}/ /;但仍然得到相同的输出。

我将如何正确指定要在替换中查找的出现次数?

4

1 回答 1

5

用于/g替换“全局”。

$charlie =~ s/[,\-]/ /g;
                      ^
                      |

(,在字符类中甚至在一般的正则表达式中都不是特殊的,所以它不需要转义。另一方面,-在字符类中可能是特殊的。如果有什么应该转义,那就是-。也就是说,-不需要如果它是类的第一个或最后一个字符,则被转义。)

于 2013-08-07T16:07:03.380 回答