如何将regex模式转换为包含所有匹配单个字符的列表?
解决方法
你要生成正则^[0-9a-zA-Z ._-]+$匹配的所有单个字符列表,不能直接遍历正则字符串本身——那只会拿到正则语法里的符号,拿不到区间里的所有字符。正确的做法是把正则里的每个字符范围展开:
- 数字0-9:对应ASCII码48到57,用
chr()转换为字符 - 小写字母a-z:ASCII码97到122
- 大写字母A-Z:ASCII码65到90
- 单独的特殊字符:空格、
.、_、-
直接用代码生成:
# 生成数字0-9 digits = [chr(i) for i in range(48, 58)] # 小写字母a-z lowercase_letters = [chr(i) for i in range(97, 123)] # 大写字母A-Z uppercase_letters = [chr(i) for i in range(65, 91)] # 单独的特殊字符 special_chars = [' ', '.', '_', '-'] # 合并成最终的白名单列表 white_list = digits + lowercase_letters + uppercase_letters + special_chars
这样生成的white_list就包含了正则匹配的所有单个字符,你可以打印出来验证。
内容的提问来源于stack exchange,提问作者FaCoffee
相关产品推荐
相关产品推荐

