C # Как удалить текст между BBCode - PullRequest
0 голосов
/ 04 июля 2011

Как удалить весь текст между цитатой BBCode (включая сам BBCode):

[quote date=2011-07-02 14:43:53 user=test link=1]blabla[/quote]

Я должен добавить, что между тегами может быть текст с тегами HTML для форматирования.Моя текущая попытка выглядит так:

Regex regex = new Regex(@"[quote+].+?[/\+quote]");

Ну, это почти работает.

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Вы можете использовать следующее регулярное выражение:

@"\[quote.*\].*?\[/quote\]"

Обратите внимание, что в регулярном выражении вы должны избегать квадратных скобок.

1 голос
/ 04 июля 2011

Поскольку ваши блоки BBCode содержат атрибуты, простого + будет недостаточно для покрытия всего.+ означает повторить указанный диапазон символов, в данном случае e .

На моей голове я бы попробовал что-то вроде этого:

 \[quote([^\[]*)\](.*?)\[\/quote\]

Пожалуйста, имейте в виду, что я не проверял это на C #, где синтаксис может отличаться в зависимости от интерпретатора.Также обратите внимание, что я добавил группы выбора, чтобы вы могли проверить результат каждого выражения.Как ответил @Howard, [ и ] являются зарезервированными символами и, следовательно, должны быть экранированы.

...