正则表达式 - 替换标签和特殊字符,保存标签内的文本

时间:2013-07-04 22:41:54

标签: python regex

我有一个包含以下内容的文件:

SomeText `SomeOtherText`

SomeOtherTextAgain:
* Text1

我正在尝试替换` and *字符,以便我的输出为:

SomeText \\text{ SomeOtherText } 

SomeOtherTextAgain:
\\begin{itemize}
\item Text1
\\end{itemize}

类似于:

  • * mystring \n变为\\begin{itemize} \n \item mystring \n \\end{itemize}
  • mystring变为\\texttt{mystring }

我尝试使用python提供的正则表达式库中的替换选项来执行此操作,但我不知道如何在替换之间保存文本。例如,我使用以下内容替换星号:

re.sub('\*.*','\\\\begin{itemize} \n \\item \n \\\\end{itemize}',mystring)

但是,我丢失了.*捕获的文字。 我正在尝试用正则表达式做什么,或者我应该找出一个不同的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:2)

当然可以使用正则表达式,将要保留的文本放在括号中,然后在“\ 1”的repl字符串中引用它(对于第一个,\ 2表示第二个等):

import re
mystring = '* Text1'
print re.sub(r'\* (.*)',r'\\begin{itemize} \n\\item \1 \n\\end{itemize}',mystring)

输出:

\begin{itemize} 
\item Text1 
\end{itemize}

有关详细信息,请参阅http://docs.python.org/2/library/re.html#re.sub