如何在 C++ 中为 BSON 对象编写正则表达式?
How to write Regular Expression for BSON Object in c++?
我有这样的 BSON 对象,
{ "0" : "Kollywood", "1" : "Tollywood" }
我将在 mongo 数据库中使用这个 bson 对象 $in 查询来获取所有不区分大小写的匹配标签。但我一个人得到完全匹配的结果。
{
"result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"
}
]
}
],
"ok": 1
}
我的要求是,(所有匹配的标签不区分大小写)
{
"result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"
},
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "KollyWOOD"
}
]
}
],
"ok": 1
}
我如何在 C++ 中执行此操作?
这是您可以使用的示例代码:
string inp = "{\r\n\r\n \"result\": [\r\n {\r\n \"_id\": 110, \r\n \"tags\": [\r\n {\r\n \"id\": \"5524cdfffe13b4934bbd6cab\", \r\n \"name\": \"Kollywood\"\r\n }\r\n ]\r\n }\r\n ], \r\n \"ok\": 1\r\n}";
string regx = "(\"tags\":[\s\r\n]+\[[\s\r\n]+)(\{[\s\r\n]+\"id\":[\s\r\n]+\"[^\"]*?\",[\s\r\n]+\"name\":[\s\r\n]+\")([^\"]*?)(\"[\s\r\n]+\})";
regex rxg(regx);
string reslt = regex_replace(inp, rxg, "},\r\n KollyWOOD");
std::cout << reslt << endl;
结果:
{ "0" : "Kollywood", "1" : "Tollywood" }
这是查询对象,我必须按以下方式转换它
{
"$or": [
{
"tags.name": {
"$regex": "^kolly wood",
"$options": "xi"
}
},
{
"tags.name": {
"$regex": "^tolly wood",
"$options": "xi"
}
}
]
}
我有这样的 BSON 对象,
{ "0" : "Kollywood", "1" : "Tollywood" }
我将在 mongo 数据库中使用这个 bson 对象 $in 查询来获取所有不区分大小写的匹配标签。但我一个人得到完全匹配的结果。
{
"result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"
}
]
}
],
"ok": 1
}
我的要求是,(所有匹配的标签不区分大小写)
{
"result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"
},
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "KollyWOOD"
}
]
}
],
"ok": 1
}
我如何在 C++ 中执行此操作?
这是您可以使用的示例代码:
string inp = "{\r\n\r\n \"result\": [\r\n {\r\n \"_id\": 110, \r\n \"tags\": [\r\n {\r\n \"id\": \"5524cdfffe13b4934bbd6cab\", \r\n \"name\": \"Kollywood\"\r\n }\r\n ]\r\n }\r\n ], \r\n \"ok\": 1\r\n}";
string regx = "(\"tags\":[\s\r\n]+\[[\s\r\n]+)(\{[\s\r\n]+\"id\":[\s\r\n]+\"[^\"]*?\",[\s\r\n]+\"name\":[\s\r\n]+\")([^\"]*?)(\"[\s\r\n]+\})";
regex rxg(regx);
string reslt = regex_replace(inp, rxg, "},\r\n KollyWOOD");
std::cout << reslt << endl;
结果:
{ "0" : "Kollywood", "1" : "Tollywood" }
这是查询对象,我必须按以下方式转换它
{
"$or": [
{
"tags.name": {
"$regex": "^kolly wood",
"$options": "xi"
}
},
{
"tags.name": {
"$regex": "^tolly wood",
"$options": "xi"
}
}
]
}