Неполный квантификатор в Regex в vscode - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать выражение регулярного выражения для начала объекта, чтобы я мог заменить блок в комплекте с одним " в поиске и замене vscode.

My Regex

("id":{"\$oid":)[0-9]+(},"product_id":)[0-9]+(,")

Мой пример ввода

{"id":{"$oid":973},"product_id":973,"product_name":"Scotch - Queen Anne","product_amount":92,"product_group":"not perishable","distribution_to":"The Salvation Army Visalia - Neighborhood Market","distribution_from":"MCFB","expiration_date":"8/24/2020","pack_date":"4/19/2021","sell_by_date":"12/6/2020","use_by_date":"2/18/2021","created_at":"2020-04-24 03:15:40 -0400","updated_at":"2020-04-24 03:15:40 -0400"},

Я успешно проверил это выражение на этих веб-сайтах: regex101.com, regexr.com, однако по-прежнему получаю сообщение об ошибке при вставке в свой vscode.

enter image description here

1 Ответ

1 голос
/ 25 апреля 2020

Это правильное регулярное выражение, по крайней мере, в JavaScript движке, используемом VS Code (см. этот ответ ), но я думаю, что проверка кода * VS 1004 * VS Code запутана (так как был я) по неэкранированным фигурным скобкам - открытие { в первой группе и закрытие } во второй.

Как подсказывают @ rioV8 и @Nick в комментариях, вы необходимо убрать их с помощью back sla sh \, чтобы заставить его работать:

("id":\{"\$oid":)[0-9]+(\},"product_id":)[0-9]+(,")

Вот небольшая демонстрация, демонстрирующая, что исходное регулярное выражение работает в JS:

const regex = /("id":{"\$oid":)[0-9]+(},"product_id":)[0-9]+(,")/;

const sample = '{"id":{"$oid":973},"product_id":973,"product_name":"Scotch - Queen Anne","product_amount":92,"product_group":"not perishable","distribution_to":"The Salvation Army Visalia - Neighborhood Market","distribution_from":"MCFB","expiration_date":"8/24/2020","pack_date":"4/19/2021","sell_by_date":"12/6/2020","use_by_date":"2/18/2021","created_at":"2020-04-24 03:15:40 -0400","updated_at":"2020-04-24 03:15:40 -0400"},';

const result = sample.match(regex);

let output = [
  `full match:\t${result[0]}`,
  `group 1:\t${result[1]}`,
  `group 2:\t${result[2]}`,
  `group 3:\t${result[3]}`
]

document.querySelector("#result").innerText = output.join('\n');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...