我正在尝试使用 Python 和正则表达式来搜索以某些定义的方式查找的单词。谁能告诉我为什么下面的代码返回单词“choosy”作为输出的一部分?我想我确保“oo”后面应该跟任意数量的辅音,然后是单词边界,而不是“sy”。
代码:
import re
pattern = r'\b[b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]*oo([b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]*\b)'
# Example list of words
words = ["choosy", "book", "boot", "booze", "loose", "look", "foot", "moo", "food", "moose"]
# Find matches
matches = [word for word in words if re.fullmatch(pattern, word)]
print("Matches:", matches)
输出:
Matches: ['choosy', 'book', 'boot', 'look', 'foot', 'moo', 'food']
s
在 p-t
范围内,并且 y
在 v-z
范围内。因此,您的 [b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]
字符类与 s
和 y
相匹配。如果您不想匹配这些字符,则说明您在模式中使用了错误的字符类。