Регулярное выражение для разбора строковых URL-ссылок - PullRequest
2 голосов
/ 26 мая 2011

Я ищу способ разбить URL-ссылку на следующие сегменты без использования System.Uri

/ Default.aspx / 123 / тест? Var1 = знач1

Мне нужно разбить эту URL-ссылку на значения:

  1. Файл
  2. PathInfo
  3. QueryString

Ответы [ 3 ]

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

Вот один:

string pattern = @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)"

Исходная ссылка

1 голос
/ 09 июня 2011

Вот мой код:

   var match = Regex.Match(internalUrl,
                            @"^\/([\w|\/|\-|\,|\s]+)\.([a-zA-Z]{2,5})([\w|\/|\-|\,|\s]*)\??(.*)",
                            RegexOptions.IgnoreCase | RegexOptions.Singleline |
                            RegexOptions.CultureInvariant | RegexOptions.Compiled);
    if (match.Success)
    {
        var filePath = match.Groups[1].Value;
        var fileExtention = match.Groups[2].Value;
        var pathInfo = match.Groups[3].Value;
        var queryString = match.Groups[4].Value;

        log.Debug("FilePath: " + filePath);
        log.Debug("FileExtention: " + fileExtention);
        log.Debug("PathInfo: " + pathInfo);
        log.Debug("QueryString: " + queryString);
    }
1 голос
/ 26 мая 2011
string pattern= "\b(?<protocol>https?|ftp|gopher|telnet|file|notes|ms-help)://(?<domain>[-A-Z0-9.]+)(?<file>/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(?<parameters>\?[-A-Z0-9+&@#/%=~_|!:,.;]*)?"

Это будет генерировать проверку именованных групп для того, что вы хотите извлечь

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