正则表达式来测试字符串可能值的有限调色板?

2024-09-30 00:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个正则表达式来测试字符串是否在特定的值调色板中,例如字符串dir只能是ltrrtllrorlo,或者另一个示例bool只能是falsetrue。你知道吗

我可以用什么正则表达式来测试像dirbool这样的字符串,来测试一组有限的值?你知道吗


Tags: 字符串falsetrue示例dirrtlbool调色板
3条回答

你的意思是'^(ltr|rtl|lro|rlo)$''^(true|false)$'吗?你知道吗

这甚至可以很容易地实现自动化:

def make_re(args):
    args = (re.escape(arg) for arg in args) #if you want to escape special characters
    return re.compile('^({0})$'.format('|'.join(args)) )

boolre = make_re(('true','false'))

然而,如果你把args = (re.escape(arg) ...)这一行放在那里,那么除了使用if arg in myset: ...所能得到的以外,你真的什么也得不到。unescape版本的优点在于,您至少还具有一些regex灵活性。你知道吗

使用列表或集合比正则表达式更好。你知道吗

dir_choice = set(('ltr', 'rtl', 'lro', 'rlo'))

if dir in dir_choice:
    ...

(如果您的dir_choice是以前定义的,那么检查速度大约是@IvanKoblik的编译正则表达式的六倍)

bool_choice = set(('true', 'false'))

if bool in bool_choice:
    ...

要检查dir是否等于这些字符串之一,可以使用以下命令:

re.match("^(ltr|rtl|lro|rlo)$", dir)

布尔的另一个例子:

re.match("^(false|true)$", bool)

除非您遵循更好的建议并为此使用哈希集。你知道吗

相关问题 更多 >

    热门问题