我正在尝试在Perl中编写一个正则表达式来过滤掉字符串中的单词“a”,但不是每次出现字母“a”。例如,如果我有字符串“我看到了一只肥猫”,
my $string = "I saw a fat cat";
我希望过滤后的字符串是“我看到肥猫”,但我得到“我sw ft ct”。我尝试过这种表达的变体:
$string=~ s/a//g;
答案 0 :(得分:6)
使用\b
分隔符作为字边界:
$string =~ s/\ba\b//g;
请注意,这只会摆脱a
,它不会摆脱旁边的空格。如果你想要一个正确间隔的句子,你可能想要使用这样的东西(这也会删除a
之前的前导空格,但是留下尾随的句子以防止前后的单词来自被推到一起):
$string =~ s/\s*\ba\b//g;