我正在编写一个通过json文件接受用户配置的工具。这个配置的一部分是python正则表达式和一些可选的正则表达式标志。目前,正则表达式标志的配置是一个整数数组,它们都将通过按位或(|)运行并发送到重新编译方法。
我的问题是如何验证这些整数以确保它们是有效的重新标记?
编辑:或者可能是我问题的另一个解决方案......用户是否可以在JSON中指定实际的重新标记?即,[re.DEBUG,re.IGNORECASE]等等然后以某种方式从我的python脚本中的JSON文件中翻译它们?
答案 0 :(得分:1)
您可以定义所有可能标记的字典(它们很少,请参阅re
6.2.2. Module Contents),然后通过相应的键获取值。
A Python demo:
import re
re_flags = { 're.A' : re.A,
're.ASCII' : re.ASCII,
're.DEBUG' : re.DEBUG,
're.I' : re.I,
're.IGNORECASE' : re.IGNORECASE,
're.L' : re.L,
're.LOCALE' : re.LOCALE,
're.M' : re.M,
're.MULTILINE' : re.MULTILINE,
're.S' : re.S,
're.DOTALL' : re.DOTALL,
're.X' : re.X,
're.VERBOSE' : re.VERBOSE }
flg = 're.I' # User input
if flg in re_flags: # If the dict contains the key
print(re_flags[flg]) # Print the value (re.I = 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