如何匹配以下任何字词:'true', 'yes', 'Yes', 'on', 'On', '1', 1, True
?
我尝试过使用'^[1][{t,T}rue]|[]{y,Y}es]|[{o,O}n]|['1']^$'
,但我无法实现。
答案 0 :(得分:1)
def is_yes(x):
return str(x).lower() in ('1', 'true', 'yes', 'on')
for x in ['true', 'yes', 'Yes', 'on', 'On', '1', 1, True, False, None, 0, 'no', 'random']:
print(is_yes(x))
输出:
True
True
True
True
True
True
True
True
False
False
False
False
False
答案 1 :(得分:1)
你可以试试这个正则表达式:
>>> import re
>>> string = "'true', 'yes', 'Yes', 'on', 'On', '1', 1, True"
>>> re.findall("yes|Yes|true|True|on|On|1", string)
['true', 'yes', 'Yes', 'on', 'On', '1', '1', 'True']
希望它会有所帮助。
答案 2 :(得分:0)
您似乎在混淆两个问题...并非列表中的所有内容都是字符串,因此您无法针对正则表达式检查所有问题。
但假设您正在将所有这些转换为字符串:
tests = map(str, ['true', 'yes', 'Yes', 'on', 'On', '1', 1, True])
然后你需要的所有正则表达式是:
import re
regex = re.compile('True|Yes|On|1', re.I)
这将抓住所有这些:
print all(map(regex.match, tests))