在 Python 中,如何将 'a' 或 'an' 替换为表示多于一个的数字?

In Python, how to replace either an 'a' or 'an' with a number indicating more than one?

注意:这道题肯定和Does re in Python support word boundaries (/b)不一样。提到的 link 寻求一个非常简单的查询的答案,粗略地浏览一下 Python 正则表达式中的任何教程都会提供带有示例的解释。我的问题是在 OR 表达式周围使用单词边界,这远非微不足道或被视为重复。

我试图构建一个可口的示例来演示正则表达式单词边界。为此,我想展示一个饮食意识强的人订购的单一食品是如何为一个嗜酒者改变的,并编写了以下程序:

import re
items_lean = 'a masala dosa, an idli and a mango lassi'
pattern = r'{}'.format('an|a') # Use pattern as dynamic variable in regex
items_fat = re.sub(pattern, 'four', items_lean) # OOPS
print(items_fat)
pattern_fat = r'{}'.format('\ban\b|\ba\b') # Ensure a or an occurs as a word by itself
items_fat_proper = re.sub(pattern_fat, 'four', items_lean)
print(items_fat_proper)

我期望以下输出对应于每个 print 语句

four mfoursfourlfour dosfour, four idli fourd four mfourgo lfourssi
four masala dosa, four idli and four mango lassi

但是,我得到的是:

four mfoursfourlfour dosfour, four idli fourd four mfourgo lfourssi
a masala dosa, an idli and a mango lassi

应该将 \b 因子放在哪里以获得所需的输出?

为了满足你需要逃避 \bs 或使用原始输入格式即

pattern_fat = r'\ban\b|\ba\b'

我还删除了多余的 format,我怀疑它造成了这种混乱!