Я работаю над классом C # для синтаксического анализа BBCodes из текста, извлеченного из базы данных, для сообщений PHPBB. В PHPBB добавлен собственный BBCode, который выглядит следующим образом:
[deck={TEXT1}]{TEXT2}[/deck]
Что в базе данных выглядит так:
[deck=FirstText:13giljne]Large Multiline Text[/deck:13giljne]
Я пытаюсь заменить это с помощью Regex в C #. Мой C # выглядит так:
string text = "[deck=FirstText:13giljne]Large Multiline Text[/deck:13giljne]";
string replace = "my replacement string";
string pattern = @"\[deck=((.|\n)*?)(?:\s*)\]((.|\n)*?)\[/deck(?:\s*)\]";
RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(text, replace);
Я почти уверен, что все сводится к тому, что мой шаблон Regex ошибочен. Что меня не удивляет, поскольку Regex - не совсем моя сильная сторона.
Заранее спасибо. Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: поскольку некоторые люди сочли это непонятным, я добавлю более крупные примеры.
Исходный текст:
[deck=Foo:13giljne]
Item #1
Item #2
Item #3
Item #4
[/deck:13giljne]
Желаемый результат:
<span>Foo</span>
<div>
Item #1
Item #2
Item #3
Item #4
</div>
Надеюсь, это дает более четкое представление о том, что я пытаюсь сделать.
[deck=...]
и[/deck...]
и хотите только текст между тегами BBCode. Это верно? - person jwheron   schedule 15.11.2011[deck=...]
и[/deck...]
на HTML. Думаю, я отредактирую вопрос, приведя несколько примеров. - person BRW   schedule 15.11.2011