使用Perl过滤掉单词“a”但不是每个字母“a”

时间:2016-02-16 06:26:05

标签: regex string perl

我正在尝试在Perl中编写一个正则表达式来过滤掉字符串中的单词“a”,但不是每次出现字母“a”。例如,如果我有字符串“我看到了一只肥猫”,

my $string = "I saw a fat cat";

我希望过滤后的字符串是“我看到肥猫”,但我得到“我sw ft ct”。我尝试过这种表达的变体:

$string=~ s/a//g;

1 个答案:

答案 0 :(得分:6)

使用\b分隔符作为字边界:

$string =~ s/\ba\b//g;

请注意,这只会摆脱a,它不会摆脱旁边的空格。如果你想要一个正确间隔的句子,你可能想要使用这样的东西(这也会删除a之前的前导空格,但是留下尾随的句子以防止前后的单词来自被推到一起):

$string =~ s/\s*\ba\b//g;