gpt4 book ai didi

regex - Django - 在模型中存储原始字符串文字以供正则表达式使用?

转载 作者:行者123 更新时间:2023-12-04 06:11:12 26 4
gpt4 key购买 nike

我有 Django 模型,并且在其中一个字段中我需要存储一个我稍后将使用的正则表达式字符串:

class Foo(models.Model):
name = models.CharField(max_length=30, unique=True)
regex_string = models.TextField()

例如,regex_string 字段可能设置为:
r'\d{2}'

然后我尝试稍后检索它,将其编译为正则表达式并使用它 - 但是,它似乎没有按计划工作:
>>> pattern = re.compile(ham.regex_string)
>>> print(pattern.match("22"))
None

显然,如果我直接传递原始字符串文字,它工作正常:
>>> pattern = re.compile(r'\d{2}')
>>> pattern.match("22")
<_sre.SRE_Match object at 0x1505100>

如果我真的打印 ham.regex_string,它会返回:
u"r'\\d{2}'"

所以它是一个unicode字符串,但由于某种原因反斜杠加倍了?有没有更好的方法在 Django 模型中存储正则表达式模式,以便我以后可以使用它?

干杯,
胜利者

编辑:感谢大家的回答 =)。我已经将答案授予了 rczajka,因为他是这篇文章的第一部分(至少在可以相信 StackOverflow 时间戳的情况下)。

只是为了解决问题,该字段是由用户在表单 (django-admin) 上输入的。以前,他们输入正则表达式 r'' - 例如 r'\d{2}\ .但是,如果我只是让他们输入字符串文字本身 \d{2} ,它现在似乎可以工作了 - Django 不会篡改字符串,也不会解释反斜杠 - 没有理由应该这样做,对吧?

最佳答案

你如何设置 regex_string 字段?您是否可能在页面上输入? r''符号只是语法糖:

>>> r'\d{2}'
'\\d{2}'
>>> print r'\d{2}'
\d{2}

因此,如果您想将某些内容放入输入中,请编写实际的正则表达式字符串 ( \d{2} ),而不是 Python 文字。

关于regex - Django - 在模型中存储原始字符串文字以供正则表达式使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com