Python Regex用于多行内容的负查找



我是Python新手。我正在制作LaTeX文件,其中包含大量的数学,编程代码等。我用" "替换了多个空间" +"。但我需要忽略在我的代码的某些部分。例如:

Normal Text:"Hai, I am New to Python"。我用"Hai, I am New to Python"将多个空间替换为单个空间。这个正则表达式应用于整个文档。但我需要忽略某些LaTeX标签中的多空间。例如

Hai, I am    New to       Python
begin{lstlisting}[title=Sample]
print("Hai, I am    New to       Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
end{lstlisting}

在我的代码将begin{lstlisting}end{lstlisting}之间的多空格改为单空格后

"Hai, I am New to Python"
begin{lstlisting}[title=Sample]
print("Hai, I am New to Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
end{lstlisting}

如何忽略begin{lstlisting}end{lstlisting}之间的python regex ?

一个合适的LaTeX解析器是可行的方法,但这可能是一个"足够好"的解决方案。看你怎么想。

import re
text = '''
Hai, I am    New to       Python
\begin{lstlisting}[title=Sample]
print("Hai, I am    New to       Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
\end{lstlisting}
'''

text = re.sub(r' +(?!(?:(?!\begin{lstlisting}).)*\end{lstlisting})', ' ', text, flags=re.DOTALL)
print(text)

它的工作原理是,如果end{lstlisting}出现在字符串前面,而begin{lstlisting}出现在它前面,则不替换空格。

相关内容

  • 没有找到相关文章

最新更新