Редактировать: Вы можете просто использовать $ regex в своем запросе, используя выражение ^ABC(?:.*?)\\d+$
, например:
Пример документа MongoDB:
db={
"products": [
{
"name": "product A",
"product": "ABC-123"
},
{
"name": "product B",
"product": "ABC123"
},
{
"name": "product C",
"product": "ABC-123"
}
]
}
Запрос:
db.products.find({
"product": {
"$regex": "^ABC(?:.*?)\\d+$"
}
})
Демо: https://mongoplayground.net/p/WdqTg7LCZIk
Возможно, мы сможем найти выражение для этой проблемы. Может быть, давайте начнем с выражения, похожего на:
product:\s+"(.+?)"
Здесь мы используем product:\s+"
в качестве левой границы, затем собираем любые символы, затем связываем его справа с "
.
const regex = /product:\s+"(.+?)"/gm;
const str = `{
name: "something"
product: "ABC-123"
}`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Или мы можем расширить это на то, что нам нравится захватывать, а не захватывать:
(?:product:\s+")(.+?)(?:")