Найти комментарии, которые не находятся внутри кавычек, используя регулярное выражение javascript - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу найти все замечания в коде SQL, например:

выберите 1 - замечание для удаления

Простое регулярное выражение будет:

/ -. + / G

Но не в кавычках, например:

выберите 1, '--не делатьудалить код '

выберите 1,' хам - не удаляйте код '

выберите' хам - не удаляйте код ', 1

1 Ответ

2 голосов
/ 03 апреля 2019

Вы можете сопоставить то, что вы не хотите найти, и захватить в группе то, что вы хотите найти, используя чередование

'[^']*--[^']*'|(--.+)

Это будет соответствовать

  • [^']*--[^']*' Совпадение не ' 0+ раз, затем - и снова не '0+ раз
  • | или
  • (--.+) Захват в группе 1, соответствующий - и остальная часть строки

Regex demo

[
  "select 1 --remark to remove",
  "select 1, '--do not remove code'",
  "select 1, 'hamm --do not remove code'",
  "select 'hamm --do not remove code',1",
].forEach(s => {
  let res = s.match(/'[^']*--[^']*'|(--.+)/);
  if (undefined !== res[1]) {
    console.log(res[1]);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...