为什么这个python匹配?

Dav*_*415 1 python regex

有人可以解释这个奇怪的python行为吗?显然字符串'test'不包含'Bid'或'Ask'.为什么这匹配?

import re
pat=r'[Bid|Ask]'
reg=re.compile(pat)
if reg.search('test'): print "matched!"
Run Code Online (Sandbox Code Playgroud)

......匹配!

Thi*_*ter 10

[...]定义一个字符类,匹配里面列出的任何字符.你想要的是什么par = r'(Bid|Ask)'.

但是,您根本应该使用正则表达式,请执行以下操作:

if whatever in ('Bid', 'Ask'):
    # it's one of these two
else:
    # it isn't
Run Code Online (Sandbox Code Playgroud)

如果您需要执行子字符串检查(感谢@agf):

if any(word in whatever for word in ('Bid', 'Ask')):
    # one of the words is in the sting whatever
Run Code Online (Sandbox Code Playgroud)


wkl*_*wkl 5

[...]字符类匹配器,这意味着它将匹配集合中的任何字符.

你可能想要交替,像这样:r'(Bid|Ask)'.