首页 > 解决方案 > 正则表达式:检查字符串是否包含非白名单字符

问题描述

我想检查一个字符串是否包含不在白名单中的字符,如果确实如此,则必须丢弃该字符串。

白名单目前abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?.,和可能是其他人。

从字符串(如提供的字符串)加载白名单对我来说非常重要,因为我以后可能需要扩展白名单。

标签: pythonregex

解决方案


你不需要正则表达式。只需检查是否有任何字符不在白名单中:

whitelist_set = set(whitelist)
if any(c not in whitelist_set for c in my_string):
#discard

正如@jpp 在评论中提到的那样,首先将白名单转换为 a 更有效,set因为查找将是O(1)而不是O(n)for list


推荐阅读