如何在python中将正则表达式序列化为json?
Posted
技术标签:
【中文标题】如何在python中将正则表达式序列化为json?【英文标题】:How to serialize a regex to json in python? 【发布时间】:2015-08-30 02:36:06 【问题描述】:我正在python
中构建一个API,它接受正则表达式,并且需要能够将已编译的正则表达式序列化回json
响应中的原始字符串。我环顾四周,但没有找到从编译的正则表达式访问原始正则表达式的明显方法:
import re
regex = re.compile(r".*")
# what now?
我想出的一种方法是创建一个自定义 Regex
类,它反映了所有功能,但提供了对 raw
属性的访问权限,我可以在序列化时使用该属性:
import re
class SerializableRegex(object):
def __init__(self, regex):
self.raw = regex
self.r = re.compile(regex)
self.r.__init__(self)
但这似乎无法让我访问已编译的正则表达式的方法。
我可能不得不采用的最后一个选项是简单地镜像我的自定义类中的所有方法:
import re
class SerializableRegex(object):
def __init__(self, regex):
self.raw = regex
self.r = re.compile(regex)
self.r.__init__(self)
def match(self, *args, **kwargs):
return self.r.match(*args, **kwargs)
...
然而,这似乎完全不雅。有没有更好的解决方案?
【问题讨论】:
【参考方案1】:您可以通过pattern
属性访问原始正则表达式字符串:
import re
regex_str = '.*'
regex = re.compile(regex_str)
assert(regex_str == regex.pattern)
【讨论】:
因此将.pattern
添加到 re.compile(regex_str).pattern 您的正则表达式将是 JSON 可序列化的。以上是关于如何在python中将正则表达式序列化为json?的主要内容,如果未能解决你的问题,请参考以下文章
如何编写一个正则表达式命令在 python 中将字符串转换为日期时间格式?
如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?