Regex соответствует giturl с необязательным именем файла - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно получить две части (имя пользователя / gistid и имя файла) из URL-адреса github gist.

Sofar, я получил это:

  const gisturl = "https://gist.github.com/vanaf1979/329abed564c2ba10eda29a53b399ac69#file-parse-wp-rest-api-1-parse-js";
  const myRegexp = /\.com\/+(.*)?#file-(.*)/gi;
  const matches = myRegexp.exec(gisturl);
  console.log(matches);

а c дает мне

0: ".com/vanaf1979/329abed564c2ba10eda29a53b399ac69#file-parse-wp-rest-api-1-parse-js"
1: "vanaf1979/329abed564c2ba10eda29a53b399ac69"
2: "parse-wp-rest-api-1-parse-js"

Пока все хорошо, за исключением того, что имя файла (# file-parse-wp-rest-api-1-parse- js) является необязательным, и если я удалю его из строки, регулярное выражение больше не будет соответствовать .

Так что мне нужно, чтобы регулярное выражение соответствовало обоим регистрам с именем файла или без него.

Любая помощь будет очень признательна.

1 Ответ

2 голосов
/ 26 мая 2020

Вы можете изменить первую часть, чтобы вместо этого использовать класс отрицательных символов [^#]+, соответствующий любому символу, кроме #

Затем вы можете сделать вторую часть необязательной и сохранить группу захвата для части, которая идет после file-

Обратите внимание, что вы можете опустить знак плюса после прямого sla sh \/+

\.com\/([^#]+)(?:#file-(.*))?

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...