2016-01-23 2 views
2

Обычно, когда я хочу, чтобы удалить текст между двумя строками с использованием регулярных выражений в Python, я:Python: Использование Regex для удаления текста с «{}»

s = re.sub('z1.*?AA', '', s, flags=re.DOTALL) 

Где s мой текст, и я использую выше код для удаления всего между z1 и AA (включая z1 и AA). Но теперь я изо всех сил, чтобы сделать то же самое для следующего:

У меня есть следующая строка (из латекса .txt файл):

\begin{tabular}{lccccc} 
\toprule 
      &   &   &   &   &    \\ 
      & (0)  & (1)  & (2)  & (3)  & (4)  \\ 
\hline 
\hline 
\end{tabular} 
\begin{tabular}{llllll} 

Моя цель состоит в том, чтобы заменить все от \toprule до последнего } на последней строке. Я пробовал несколько комбинаций регулярных выражений, таких как .*?\{} и другие, и никаких успехов ... что я делаю неправильно?

+0

Почему вы не пытаетесь использовать парсер? – thefourtheye

ответ

3

Вы можете использовать:

s = re.sub(r'\\toprule.*}', '', s, flags=re.DOTALL) 

RegEx Demo

re.DOTALL делает матч DOT любой символ, включая переводы строк и жадного .* убеждается, чтобы соответствовать последним } на входе.

+1

О, сладкий! Спасибо. Работает pefect. Узнал что-то перед сном. – Plug4

Смежные вопросы