0

是否可以在数字而不是字符串上使用正则表达式?

例如:我在 mongodb 中有一个字段,其中包含数值 1234567(未存储为用于排序等目的的字符串)。现在我想使用正则表达式来查找这个数字的一​​部分,即 456。

在包含字符串的数据库字段上,"1234567"这很容易:我只是传递re.compile("456")给我的数据库查询。但是re.compile(456)让我得到以下信息:

TypeError: first argument must be string or compiled pattern

关于如何做到这一点的任何提示?将我的数字存储为字符串并不是一个真正的选择,因为我会失去许多其他可能性(如 gt/lt、排序等)。

更新: 另外,我将正则表达式直接传递到 db-query 以过滤结果,因此我无法提取单个字段,将其内容转换为字符串,然后在其上使用正则表达式。

4

3 回答 3

2

您可以使用内置str函数将数字转换为字符串:

str(456)
于 2013-09-01T10:14:06.400 回答
1

标记为重复:整数值上的 MongoDB 正则表达式搜索

db.test.find({ $where: "/^123.*/.test(this.example)" })
{ "_id" : ObjectId("4bfc3187fec861325f34b132"), "example" : 1234 }
于 2013-09-01T13:02:24.237 回答
0

这对于 MongoDB 是不可能的。根据您的应用程序,您可能能够将这些数字存储为字符串类型的值而不是数字。在 Python 中:

db.collection.insert({"my_number": "12345678"})

对于电话号码或邮政编码,算术运算$inc没有意义,但您想使用正则表达式搜索数据,这可能是有意义的。

另一种方法是将每个数字存储为字符串和数字

db.collection.insert({"s": "12345678", "n": 12345678})

于 2013-09-01T20:40:17.260 回答