Python正则表达式用于不同的单词&数

时间:2016-06-02 15:30:08

标签: python regex

如何匹配以下任何字词:'true', 'yes', 'Yes', 'on', 'On', '1', 1, True

我尝试过使用'^[1][{t,T}rue]|[]{y,Y}es]|[{o,O}n]|['1']^$',但我无法实现。

3 个答案:

答案 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))