首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Regex用于多行内容的负查找

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

Stack Overflow用户
提问于 2022-05-29 08:19:15
回答 1查看 60关注 0票数 0

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

普通文本:"Hai, I am New to Python"。我已经用"Hai, I am New to Python"代替了多个空间。此正则表达式适用于整个文档。但我需要忽略某些LaTeX标记中的多个空间。例如

代码语言:javascript
复制
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}之间的单个空间之后

代码语言:javascript
复制
"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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-29 12:10:34

正确的LaTeX解析器是可行的,但这可能是一个“足够好”的解决方案。看看你怎么想。

代码语言:javascript
复制
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}出现在字符串前面,则不替换空格。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72422011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档