RegEx заменить запрос, чтобы выбрать синтаксис вики - PullRequest
0 голосов
/ 15 мая 2010

У меня есть строка HTML, которая мне нужна, чтобы получить шаблон "[Title | http://www.test.com]", например,

"

"dafasdfasdf, adfasd. [Test | http://www.test.com/] adf ddasfasdf [SDAF | http://www.madee.com/] assg ad"

Мне нужно заменить "[Title | http://www.test.com]" this на" http://www.test.com/'>Title".

Что лучше всего подойти к этому?

Я приближался к:

string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/] assg ad ";
        string p18 = @"(\[.*?|.*?\])";
        MatchCollection mc18 = Regex.Matches(test, p18, RegexOptions.Singleline | RegexOptions.IgnoreCase);
        foreach (Match m in mc18)
        {
            string value = m.Groups[1].Value;
            string fulltag = value.Substring(value.IndexOf("["), value.Length - value.IndexOf("["));
            Console.WriteLine("text=" + fulltag);
        }

Должен быть более чистый способ получения двух значений, например бит "Заголовок" и сам URL.

Есть предложения?

1 Ответ

2 голосов
/ 15 мая 2010

Заменить шаблон:

\[([^|]+)\|[^]]*]

с:

$1

Краткое объяснение:

\[         # match the character '['
(          # start capture group 1
  [^|]+    #   match any character except '|' and repeat it one or more times
)          # end capture group 1
\|         # match the character '|'
[^]]*      # match any character except ']' and repeat it zero or more times
]          # match the character ']'

Демонстрация C # будет выглядеть так:

string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/] assg ad ";
string adjusted = Regex.Replace(test, @"\[([^|]+)\|[^]]*]", "$1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...