Ваша проблема здесь:
https://clips.twitch.tv/(?<user>[^ ]+?)/(?<url>[^ ]+?)
Является последним ?
. Добавленный квантификатор ?
делает шаблон ленивым, а не жадным. Когда он жадный, он будет потреблять как можно больше символов и только отдавать назад, когда это необходимо (чтобы соответствовать остальной части рисунка). Когда он ленив, он будет принимать как можно меньше символов, только расширяясь, когда это необходимо. Поскольку +
соответствует одному или нескольким, наименьшее, что может соответствовать, равно 1, так это то, что он делает. Исправление проблемы ?
.
Вы также можете решить эту проблему, добавив $
в конец. Это соответствует концу строки, чтобы заставить ленивый квантификатор расширяться до тех пор, пока он не достигнет конца строки.
Как заметил кто-то другой, немного странно соответствовать «не пространству», поскольку в вашем URL-адресе нет пробелов. Вы могли бы соответствовать [^/]
или вы могли бы просто отказаться, что в целом и просто совпадают с чем-то вроде:
https:\/\/clips.twitch.tv\/(?<user>.+?)\/(?<url>.+)$
Или вы могли бы просто использовать Uri класс, который имеет свойства и методы для работы с Ури.
Например:
var uri = new Uri("https://clips.twitch.tv/user/ClipLink");
var segments = uri.Segments;
Console.WriteLine(segments[1)); // user/
Console.WriteLine(segments[2]); // ClipLink
* Я сделал это, и он работает отлично * ... но вы этого не понимаете? это странно. – Rahul
Почему вы ищете пробелы '[^]' вместо несвязанных косых черт '[^ /]'? – juharr
Удалите последнюю '?', Чтобы записать оставшуюся строку. –