Regex для сопоставления дополнительных подгрупп содержимого папки (комплекты поставщиков веб-пакетов) - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь выяснить два выражения регулярных выражений, которые я буду использовать с Webpack для создания двух разных пакетов поставщиков.

Вот упрощенный список того, как выглядит моя папка node_modules:

  • autonumeric
  • core-js
  • jquery
  • jquery-ui
  • jquery.watch
  • marked

Первым комплектом поставщика должен быть комплект «предметов первой необходимости», который, скажем, jquery и core-js.

  • core-js
  • jquery

Второй комплект поставщика должен содержать все остальные комплекты в node_modules, , кроме для jquery и core-js ( Это означает, что регулярное выражение должно соответствовать jquery-ui).

  • autonumeric
  • jquery-ui
  • jquery.watch
  • marked

Вот мои текущие выражения регулярных выражений:

  • Комплект базовых компонентов: /node_modules\/(jquery|core-js)\/.*\.js/
  • Комплект "остальных": /node_modules(?!\/(jquery|core-js))(\/[a-zA-Z0-9-_]+)+\.js

Проблема в том, что второе регулярное выражение не соответствует библиотекам jquery*, возможно, из-за негатива с нетерпением, начиная с jquery.

1 Ответ

1 голос
/ 20 марта 2020

Вам необходимо добавить проверку для символа / после jquery или core-js, так как вам нужно только указать их как полное имя подпапки:

node_modules(?!\/(jquery|core-js)\/)(\/[^\/]+)+\.js
                                 ^^

Или, если есть возможность быть концом строки:

node_modules(?!\/(jquery|core-js)(\/|$))(\/[^\/]+)+\.js

См. regex demo

Примечание. Я также предлагаю заменить [a-zA-Z0-9-_]+ на более общий c [^\/]+, который соответствует любые 1+ символов, кроме /, но вы можете сохранить свой шаблон, если ваши требования более точны c.

...