验证json中指定的python正则表达式标志

验证json中指定的python正则表达式标志,python,regex,Python,Regex,我正在编写一个通过json文件接受用户配置的工具。这个配置的一部分是python正则表达式和一些可选的正则表达式标志。当前,regex标志的配置是一个整数数组,所有这些整数都将通过按位or(|)运行并发送到重新编译方法 我的问题是如何验证这些整数以确保它们是有效的重标记 编辑:或者可能是我的问题的另一个解决方案。。。用户是否可以在JSON中指定实际的re标志?例如,[re.DEBUG,re.IGNORECASE]等,然后在我的python脚本中以某种方式翻译JSON文件中的标记?您可以定义一个包

我正在编写一个通过json文件接受用户配置的工具。这个配置的一部分是python正则表达式和一些可选的正则表达式标志。当前,regex标志的配置是一个整数数组,所有这些整数都将通过按位or(|)运行并发送到重新编译方法

我的问题是如何验证这些整数以确保它们是有效的重标记


编辑:或者可能是我的问题的另一个解决方案。。。用户是否可以在JSON中指定实际的re标志?例如,[re.DEBUG,re.IGNORECASE]等,然后在我的python脚本中以某种方式翻译JSON文件中的标记?

您可以定义一个包含所有可能标记的字典(它们非常少,请参见
re
),只需通过相应的键获取值

A:

如果您仍然希望使用数字:

import re
print(re.A)           # 256
print(re.ASCII)       # 256
print(re.DEBUG)       # 128
print(re.I)           # 2
print(re.IGNORECASE)  # 2
print(re.L)           # 4
print(re.LOCALE)      # 4
print(re.M)           # 8
print(re.MULTILINE)   # 8
print(re.S)           # 16
print(re.DOTALL)      # 16
print(re.X)           # 64
print(re.VERBOSE)     # 64

它是用于Python 2还是用于Python 3?@WiktorStribiżew理想情况下,我希望两者都是supportedIt,您可以使用[2,4,8,16,32,64,128,256]中的
if选项来验证它们。请注意,
re.ASCII
(256)仅在Python3
re
@WiktorStribiżew中存在,我的编辑呢?您认为可以允许用户指定标志的名称吗?这将是更具描述性和帮助性的,然后您可以创建一个字典,并将名称与实际标志进行映射,即
option\u dct={'re.i':re.i等}
是的,我将它们分配给了原始编号,因为我不知道我的脚本是否将在python 2或3中运行,因此如果我尝试使用re模块,则会有一些在python 2中不存在的标志,等等
import re
print(re.A)           # 256
print(re.ASCII)       # 256
print(re.DEBUG)       # 128
print(re.I)           # 2
print(re.IGNORECASE)  # 2
print(re.L)           # 4
print(re.LOCALE)      # 4
print(re.M)           # 8
print(re.MULTILINE)   # 8
print(re.S)           # 16
print(re.DOTALL)      # 16
print(re.X)           # 64
print(re.VERBOSE)     # 64