asp.net c # Регулярный анализ URL - PullRequest
1 голос
/ 22 июня 2011

Но мне нужно написать функцию, которая принимает строку, ищет URL-адрес в гиперссылке, а затем меняет URL-адрес так, чтобы имя страницы теперь использовалось в качестве привязки, например,

<a href="mysection/mysector/apage.aspx">

станет

<a href="mysection/mysector.aspx#apage">

, но это произойдет только для ссылок в папке mysector.

В настоящий момент я немного озадачен, и любая помощь будет великолепна.

Ответы [ 3 ]

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

Это сожрет все последовательности «folder /» и поймает последнюю из них. Это добавляет ".aspx" и "#" и имя файла без расширения. Классы символов могут нуждаться в дальнейшей корректировке, если имена папок и файлов могут содержать не только буквенно-цифровые символы.

href="(([a-z0-9]+/)*)([a-z0-9]+)/([^.]+)\.aspx"

затем заменить на

href="$1$3.aspx#$4"

Также попробуйте «mysection / anothersection / Yetanotherone / mysector / apage.aspx», чтобы понять, как оно работает

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

Я собираюсь предложить использовать модуль IIS URLRewrite , чтобы исправить его на серверной части.Тогда вам не понадобится никакой код.

Если вы действительно хотите сделать это в c #:

public string FixLinks(string strHTML)
{
    try
    {
        return Regex.Replace(strHTML, "(href=\\\".*/mysector)/(.*)", "$1.aspx#$2");
    }
    catch (Exception e)
    {
        return strHTML;
    }
}
0 голосов
/ 22 июня 2011

В произвольном порядке:

Это поможет вам при тестировании ваших регулярных выражений: http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

Взгляните на коллекцию Matches, где находятся частистрока будет сохранена.

Пример: http://forums.asp.net/t/1408417.aspx/1

Предупреждение: RegEx соответствует открытым тэгам, кроме автономных тэгов XHTML

Хорошоудачи.

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