Ваш ответ на самом деле в bbcode
модуле. К сожалению, соответствующий метод не находится в documentation, но если вы выполните поиск по коду, он находится там: Parser.strip()
. Например:
import bbcode
parser = bbcode.Parser()
code = "[code]a = [1, 2, 3, 4, 5][/code]"
plain_txt = parser.strip(code)
print(plain_txt)
'a = [1, 2, 3, 4, 5]'
К сожалению, оба Robᵩ в регулярном выражение на основе answer и postmarkup
страдают от тех же проблем - неспособность различать BBCode ([list][*]Item 1[*]Item 2[/list]
, [color=red]I hate color-blind people![/color]
и т.д.) и встроенный код пример Я выше (они оба возвращают a =
), или линия, как
I'm feeling sad :[ But, eating ice cream cheers me up! :]
, который просто возвращает
I'm feeling sad :
Это возможно потому, что bbcode
размечает строку первых, поиск допустимых лексем BBCode, и идентифицирующий остальное, как только части общего текста в. Parser.strip()
затем просто выталкивает токены BBCode и снова собирает текст, в то время как методы форматирования превращают эти маркеры в разметку XHTML и сплавляются в остальном, где это необходимо.
Это будет вырезать * все * квадратные скобки и их содержимое, хотя ... плохо, если у вас есть встроенный код или некоторые смайлики или другие вещи. – MattDMo
Я думаю, что именно об этом попросил ОП - «просто удалите BBCode и верните чистую строку». –
Извините, я мог бы быть яснее. Я имел в виду встроенный * компьютерный код. Например, '[code] a = [1, 2, 3, 4, 5] [/ code]' является действительным BBCode, указывая блок '
', но обработанный вашим ответом просто даст 'a ='. – MattDMo