如何在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中将特定范围的列扁平化为一个?

如何编写一个正则表达式命令在 python 中将字符串转换为日期时间格式?

如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?

如何在 Python 中将整数添加到此正则表达式中而不对整数进行硬编码? [复制]

在python中将pymongo查询集序列化为json

javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?