Regex для извлечения до второй или третьей части URL - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно регулярное выражение машинописи, чтобы извлечь до начала второй или третьей части из URL от начала.

Например, вот мой URL:

https://org.sharepoint.com/sites/controls/_api/web/lists

Я хочу, чтобы мое регулярное выражение return:

https://org.sharepoint.com/sites/controls

Найден шаблон регулярного выражения:

^https?://[^/]+

Вышеупомянутое регулярное выражение извлекает только здесь:

https://org.sharepoint.com

Но я хочу извлечь до здесь:

https://org.sharepoint.com/sites/controls

Ответы [ 3 ]

0 голосов
/ 04 мая 2020

Вы можете попробовать это ^https?:\/\/([^\/]+\/){3}

0 голосов
/ 04 мая 2020

попробуйте регулярное выражение именованных групп

https://github.com/tc39/proposal-regexp-named-groups

гораздо более читабельно, гораздо удобнее (особенно для замены);)

const string = 'https://org.sharepoint.com/sites/controls/_api/web/lists';
const regex = /^(?<protocol>https?):\/\/(?<domain>[^\/]+)\/(?<route1>[^\/]+)\/(?<route2>[^\/]+)/;
const result = string.match(regex);

resultElement.innerHTML = JSON.stringify({result, "result.groups": result.groups}, null, 4);
<pre id="resultElement"/>
0 голосов
/ 04 мая 2020

Можно разделить URL-адрес на разделителе с помощью регулярного выражения, а затем соединить вместе первые 3 части:

String url = "https://org.sharepoint.com/sites/controls/_api/web/lists";
String[] parts = url.split("(?<!/)/(?!/)");
String output = parts[0] + "/" + parts[1] + "/" + parts[2];
System.out.println(output);

Это напечатает:

https://org.sharepoint.com/sites/controls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...