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