正则表达式辅音不匹配

问题描述 投票:0回答:1

我正在尝试使用 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']

python python-3.x regex string
1个回答
0
投票

s
p-t
范围内,并且
y
v-z
范围内。因此,您的
[b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]
字符类与
s
y
相匹配。如果您不想匹配这些字符,则说明您在模式中使用了错误的字符类。

© www.soinside.com 2019 - 2024. All rights reserved.