Правда, я с трудом пишу регулярное выражение строку для разбора что-то в видеРегулярное выражение в регулярном выражении?
[[[tab name=dog content=cat|tab name=dog2 content=cat2]]]
Это регулярное выражение будет обработан так, что я могу динамически создавать вкладки, как показано здесь. Первоначально я пробовал шаблон регулярного выражения, как \[\[\[tab name=(?'name'.*?) content=(?'content'.*?)\]\]\]
Но я понял, что не смог получить вкладку в целом и основывался на запросе, не делая regex.replace. Можно ли взять всю вкладку, ведущую к символу трубы, в качестве группы, а затем проанализировать эту группу из пар под ключ/значение?
Это текущая строка регулярного выражения Я работаю с \[\[\[(?'tab'tab name=(?'name'.*?) content=(?'content'.*?))\]\]\]
А вот мой код для выполнения регулярных выражений. Любые рекомендации будут оценены.
public override string BeforeParse(string markupText)
{
if (CompiledRegex.IsMatch(markupText))
{
// Replaces the [[[code lang=sql|xxx]]]
// with the HTML tags (surrounded with {{{roadkillinternal}}.
// As the code is HTML encoded, it doesn't get butchered by the HTML cleaner.
MatchCollection matches = CompiledRegex.Matches(markupText);
foreach (Match match in matches)
{
string tabname = match.Groups["name"].Value;
string tabcontent = HttpUtility.HtmlEncode(match.Groups["content"].Value);
markupText = markupText.Replace(match.Groups["content"].Value, tabcontent);
markupText = Regex.Replace(markupText, RegexString, ReplacementPattern, CompiledRegex.Options);
}
}
return markupText;
}
Есть ли в вашем реальном мире данные, которые ваш пример не обеспечивает достаточной сложности? – OmegaMan